本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页
最热资讯


urnipBit改造智能小车套件所需器材:
电机驱动和超声波的安装 超声波模块共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。
电路城所有电路均源于网友上传或网上搜集,供学习和研究使用,其版权归原作者所有,对可以提供充分证据的侵权信息,本站将在确认后24小时内删除。对本电路进行投诉建议,点击投诉本电路反馈给电路城。
直接使用附件资料或需要对资料PCB板进行打样的买家,请先核对资料的完整性,如果出现问题,电路城不承担任何经济损失!
树莓派+.NET MF打造视频监控智能车——控制篇(树莓派)
2014-07-11
树莓派+.NET MF打造视频监控智能车——遥控篇
2014-07-11
树莓派+.NET MF打造视频监控智能车——控制篇(.NET MF)
2014-07-11
速度与激情,谁与我争锋——电路城优秀智能车开源作品展
2016-07-26
经典更要有新思路,51单片机花式玩法,把经典玩出新高度
2019-06-06
LTspice电源仿真工具的使用——电源设计系统课程
2020-01-02
无线遥控智能车设计(实战组装)
2019-07-30
使用NVIDIA Jetson DIY自动驾驶汽车
2020-05-22
教程:如何在家DIY Arduino游戏杆控制车
2020-05-28
智能车技术小贴士:如何制作640k无线接收器
2019-11-20