Micropython TturnipBit 体感遥控车

所需器材:
        TurnipBit开发板 一块
        下载数据线 一条
        智能小车套件 一套(底盘、车轮、电机等)
        超声波模块(HC-SR04)一个(用作小车的“眼睛”)
        L298N电机驱动模块 一个
        接入互联网的电脑 一台(推荐使用Google Chome或者Firefox浏览器)
电机驱动和超声波的安装  超声波模块共4个引脚,分别是VCCGNDTrigEchoVCCTurnipBit扩展板的+5V引脚,GNDTurnipBit扩展板的GND引脚,Trig触发引脚接P5Echo回传引脚接P8L298N电机驱动模块左侧OUT3OUT4接线端子对应接入左轮电机的下侧、上侧侧铜片,右侧也是。L298N的输入端IN1IN2IN3IN4分别接入扩展板的P19P13P12P11 详细见下表:
  TurnipBit扩展板  
超声波模块
L298N
+5V
VCC
+12V+5V
GND
GND
GND
P5
Trig
P8
Echo
P11
IN4
P12
IN3
P13
IN2
P19
IN1
   Micropython TturnipBit 体感遥控车Micropython TturnipBit 体感遥控车      
程序设计伪代码分析   
    让我们先用伪代码来分析一下避障车的程序逻辑。首先,我们通过小车的超声波模块来检测前方是否存在障碍物,计算出与障碍物之间的距离。当与障碍物的距离小于或等于我们预设的安全距离时,控制小车进行转向避开障碍物;当与障碍物的距离大于我们预设的安全距离时,控制小车进行继续前进;逻辑顺序如下:第一步,触犯超声波模块开始检测;第二步:计算出与前方障碍物的距离;第三步:判断与障碍物的距离是否小于设定的安全距离;第四步:若小于或等于则进行转向,避开障碍物;第五步:若大于则继续保持前进。根据伪代码,画成流程图如下:Micropython TturnipBit 体感遥控车    代码分析会思考的避障车整体代码,可参考右侧代码显示区,如下。
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()


代码如上  ,那么如果用拼插编程怎么实现? Micropython TturnipBit 体感遥控车 图形拼插代码.rar(1.57 MB, 下载次数: 0) 
微信公众号:Micropython玩家汇
Micropython TturnipBit 体感遥控车