python3编程小车_控制小车 - 廖雪峰 Python 3 教程 - 开发手册 - 文江博客

本文介绍了如何使用Python3编程控制LEGO EV3小车,通过初始化马达和超声波传感器,实现小车的加速、减速、停止以及障碍物检测自动停车功能。在VS Code中使用pybricks包,可以查看完整的EV3 Python接口文档。
摘要由CSDN通过智能技术生成

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

2be666dea8b78f9adb982e7349cf9843.png

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

ce8ecfe5de584accae1c538276df5dfc.png

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

motor = Motor(Port.B) # 接在B口

ultrasonic = UltrasonicSensor(Port.S4) # 接在4号口

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

speed = 0

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

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文档。

参考源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值