查看: 2375|回复: 0

Micropython TturnipBit 体感遥控车

[复制链接]
  • TA的每日心情
    慵懒
    2018-1-6 09:01
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2018-5-22 10:04:31 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 酥小小酥 于 2018-5-22 10:06 编辑

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


    2. display.show(Image.ARROW_N)
    3. pin11.write_digital(0)
    4. pin12.write_digital(1)
    5. pin13.write_digital(0)
    6. pin19.write_digital(1)
    7. while True:
    8. num = 0
    9. pin5.write_digital(0)
    10. pin5.write_digital(1)
    11. sleep(0.01)
    12. if pin8.read_digital() != True:
    13. pin5.write_digital(0)
    14. pin5.write_digital(1)
    15. sleep(0.01)
    16. while pin8.read_digital():
    17. num = num + 1
    18. if num <= 8:
    19. display.show(Image.ARROW_W)
    20. pin11.write_digital(1)
    21. pin12.write_digital(0)
    22. pin13.write_digital(0)
    23. pin19.write_digital(1)
    24. sleep(1000)
    25. display.show(Image.ARROW_N)
    26. pin11.write_digital(0)
    27. pin12.write_digital(1)
    28. pin13.write_digital(0)
    29. pin19.write_digital(1)


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

    31. from microbit import *

    32. def Go():
    33. display.show(Image.ARROW_N)
    34. pin11.write_digital(0)
    35. pin12.write_digital(1)
    36. pin13.write_digital(0)
    37. pin19.write_digital(1)

    38. Go()
    39. while True:
    40. num = 0
    41. pin5.write_digital(0)
    42. pin5.write_digital(1)
    43. sleep(0.01)
    44. if pin8.read_digital() != True:
    45. pin5.write_digital(0)
    46. pin5.write_digital(1)
    47. sleep(0.01)
    48. while pin8.read_digital():
    49. num = num + 1
    50. if num <= 8:
    51. display.show(Image.ARROW_W)
    52. pin11.write_digital(1)
    53. pin12.write_digital(0)
    54. pin13.write_digital(0)
    55. pin19.write_digital(1)
    56. sleep(1000)
    57. Go()
    复制代码


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

    2. def Go():
    3. display.show(Image.ARROW_N)
    4. pin11.write_digital(0)
    5. pin12.write_digital(1)
    6. pin13.write_digital(0)
    7. pin19.write_digital(1)

    8. def Turn():
    9. display.show(Image.ARROW_W)
    10. pin11.write_digital(1)
    11. pin12.write_digital(0)
    12. pin13.write_digital(0)
    13. pin19.write_digital(1)

    14. def Detection():
    15. num=0
    16. pin5.write_digital(0)
    17. pin5.write_digital(1)
    18. sleep(0.01)
    19. if pin8.read_digital() != True:
    20. pin5.write_digital(0)
    21. pin5.write_digital(1)
    22. sleep(0.01)
    23. while pin8.read_digital():
    24. num = num + 1
    25. return num

    26. Go()
    27. while True:
    28. num = Detection()
    29. if num <= 8:
    30. Turn()
    31. sleep(1000)
    32. Go()
    复制代码


    代码如上  ,那么如果用拼插编程怎么实现?
    图形拼插代码.rar (1.57 MB, 下载次数: 0)
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-6-13 00:19 , Processed in 0.106643 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.