加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

TurnipBit改造智能小车套件

2018/06/13
45
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
相关方案
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

urnipBit改造智能小车套件所需器材:

  • TurnipBit开发板 一块
  • 下载数据线 一条
  • 智能小车套件 一套(底盘、车轮、电机等)
  • 超声波模块(HC-SR04)一个(用作小车的“眼睛”)
  • L298N电机驱动模块 一个
  • 接入互联网的电脑 一台(推荐使用Google Chome或者Firefox浏览器)

电机驱动和超声波的安装 超声波模块共4个引脚,分别是VCC、GND、Trig和Echo。VCC接TurnipBit扩展板的+5V引脚,GND接TurnipBit扩展板的GND引脚,Trig触发引脚接P5,Echo回传引脚接P8。L298N电机驱动模块左侧OUT3、OUT4接线端子对应接入左轮电机的下侧、上侧侧铜片,右侧也是。L298N的输入端IN1、IN2、IN3、IN4分别接入扩展板的P19、P13、P12、P11。详细见下表:

TurnipBit扩展板 超声波模块 L298N
+5V VCC +12V、+5V
GND GND GND
P5 Trig
P8 Echo
P11 IN4
P12 IN3
P13 IN2
P14 IN1

程序设计伪代码分析

让我们先用伪代码来分析一下避障车的程序逻辑。首先,我们通过小车的超声波模块来检测前方是否存在障碍物,计算出与障碍物之间的距离。当与障碍物的距离小于或等于我们预设的安全距离时,控制小车进行转向避开障碍物;当与障碍物的距离大于我们预设的安全距离时,控制小车进行继续前进;逻辑顺序如下:第一步,触犯超声波模块开始检测;第二步:计算出与前方障碍物的距离;第三步:判断与障碍物的距离是否小于设定的安全距离;第四步:若小于或等于则进行转向,避开障碍物;第五步:若大于则继续保持前进。

根据伪代码,画成流程图如下:

 

代码分析会思考的避障车整体代码,可参考右侧代码显示区,如下。

from microbit import *

display.show(Image.ARROW_N)

pin11.write_digital(0)

pin12.write_digital(1)

pin13.write_digital(0)

pin19.write_digital(1)

while True:

num = 0

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

if pin8.read_digital() != True:

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

while pin8.read_digital():

num = num + 1

if num <= 8:

display.show(Image.ARROW_W)

pin11.write_digital(1)

pin12.write_digital(0)

pin13.write_digital(0)

pin19.write_digital(1)

sleep(1000)

display.show(Image.ARROW_N)

pin11.write_digital(0)

pin12.write_digital(1)

pin13.write_digital(0)

pin19.write_digital(1)

接下来,我们一起来分析一下代码。通过上面的代码,不难发现,控制避障车前进的代码部分我们重复编写了两遍,在实际项目中这种写法是不合理的。为了让代码更加简洁,优雅,我们将控制前进的代码部分提取出来建立名称为Go()的函数,在需要执行前进的地方直接调用Go()函数即可。

from microbit import *

def Go():

display.show(Image.ARROW_N)

pin11.write_digital(0)

pin12.write_digital(1)

pin13.write_digital(0)

pin19.write_digital(1)

Go()

while True:

num = 0

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

if pin8.read_digital() != True:

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

while pin8.read_digital():

num = num + 1

if num <= 8:

display.show(Image.ARROW_W)

pin11.write_digital(1)

pin12.write_digital(0)

pin13.write_digital(0)

pin19.write_digital(1)

sleep(1000)

Go()

按照同样的方式,我们将控制转向和检测障碍物的代码分别建立Turn()和Detection()函数。

from microbit import *

def Go():

display.show(Image.ARROW_N)

pin11.write_digital(0)

pin12.write_digital(1)

pin13.write_digital(0)

pin19.write_digital(1)

def Turn():

display.show(Image.ARROW_W)

pin11.write_digital(1)

pin12.write_digital(0)

pin13.write_digital(0)

pin19.write_digital(1)

def Detection():

num=0

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

if pin8.read_digital() != True:

pin5.write_digital(0)

pin5.write_digital(1)

sleep(0.01)

while pin8.read_digital():

num = num + 1

return num

Go()

while True:

num = Detection()

if num <= 8:

Turn()

sleep(1000)

Go()

代码如上 ,拼插编程代码见附件。

转自Geek-bodasister。

  • 图形拼插代码.rar
    描述:图形拼插代码

相关推荐

电子产业图谱