2025年3月26日 星期三 甲辰(龙)年 月廿五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

MicroPython 控制小车

时间:03-29来源:作者:点击数:109

上一节我们已经搭好了开发环境,接下来就可以写Python程序来控制小车了。首先用EV3主机、大型伺服马达和超声波传感器搭建一个小车:

parts

可以自由发挥,我的小车完成后长这样:

car

下一步,我们用程序控制小车。首先根据马达和传感器接入的位置初始化如下:

  • motor = Motor(Port.B) # 接在B口
  • ultrasonic = UltrasonicSensor(Port.S4) # 接在4号口

然后,设置初始速度0表示静止:

  • speed = 0

通过传入1-10分别表示加速、减速和停止:

  • def setSpeed(acc):
  • global speed
  • if acc < 0:
  • speed = max(0, speed - 1)
  • elif acc > 0:
  • speed = min(3, speed + 1)
  • else:
  • speed = 0
  • if speed > 0:
  • motor.run(speed * 90) # 设置每秒转N个90度
  • else:
  • motor.stop()

因为小车的初始速度为0,我们可以设定响应右键加速,左键减速,中键停止,上键停止并退出,用一个无限循环实现功能如下:

  • while True:
  • if not any(brick.buttons()): # 没有按任何按键
  • wait(10)
  • else:
  • if Button.LEFT in brick.buttons():
  • setSpeed(-1)
  • elif Button.RIGHT in brick.buttons():
  • setSpeed(1)
  • elif Button.CENTER in brick.buttons():
  • setSpeed(0)
  • elif Button.UP in brick.buttons():
  • setSpeed(0)
  • break
  • wait(500)
  • if ultrasonic.distance() < 200: # 检测到障碍物不足200毫米时
  • setSpeed(0)

因为EV3的控制API并没有提供回调,所以只能通过无限循环主动轮询。使用无限循环时需要注意,务必在每次循环内部通过wait()暂停若干毫秒,否则很容易耗尽CPU。最后,我们通过超声波传感器返回的距离判断是否自动停车。

加上声光特效后,来看看实际效果:

EV3的Python接口全部在pybricks包中,要查看完整的API,请在VS Code新建EV3工程时选择“Open user guide and examples”,即可在本地浏览器打开API文档。

参考源码

smallcar

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门