我正在用覆盆子皮做一个皮卡。我正在使用L293D芯片组连接两个直流电机,并且我的一切都按照本指南工作:
目前我已经写了一个基本的脚本来驾驶汽车前进,后退,左,右。但也有一些问题。我怎样才能在不先向前或向后移动的情况下左右转向。另外,我如何使汽车转向只需一个键的wasd和也许加速使用控制键?有多困难,有点像汽车游戏,你按下油门移动,但如果你释放,然后它减速?这是我目前使用的代码,但是每次都需要按enter键。在
在皮卡.py在
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
#left motor
in2 = 10
in1 = 9
en1 = 11
#right motor
in3 = 24
in4 = 23
en2 = 25
#setup motors
GPIO.setup(in2,GPIO.OUT)
GPIO.setup(in1,GPIO.OUT)
GPIO.setup(en1,GPIO.OUT)
GPIO.setup(in3,GPIO.OUT)
GPIO.setup(in4,GPIO.OUT)
GPIO.setup(en2,GPIO.OUT)
def forwards():
GPIO.output(in2,GPIO.HIGH)
GPIO.output(in1,GPIO.LOW)
GPIO.output(en1,GPIO.HIGH)
GPIO.output(in3,GPIO.HIGH)
GPIO.output(in4,GPIO.LOW)
GPIO.output(en2,GPIO.HIGH)
def backwards():
GPIO.output(in2,GPIO.LOW)
GPIO.output(in1,GPIO.HIGH)
GPIO.output(en1,GPIO.HIGH)
GPIO.output(in3,GPIO.LOW)
GPIO.output(in4,GPIO.HIGH)
GPIO.output(en2,GPIO.HIGH)
def left():
GPIO.output(in2, GPIO.LOW)
GPIO.output(in1, GPIO.LOW)
GPIO.output(en1, GPIO.LOW)
def right():
GPIO.output(in3, GPIO.LOW)
GPIO.output(in4, GPIO.LOW)
GPIO.output(en2, GPIO.LOW)
def stop():
GPIO.output(en1,GPIO.LOW)
GPIO.output(en2,GPIO.LOW)
#setup pwm
pwm_right = GPIO.PWM(en2, 100)
pwm_left = GPIO.PWM(en1, 100)
while True:
cmd = raw_input("Command, w = forward / s = backward / x = stop (add a number between 0..9 for speed eg f6):")
if len(cmd) > 0:
direction = cmd[0]
if direction == "w":
forwards()
elif direction == "s":
backwards()
elif direction == "a":
left()
elif direction == "d":
right()
elif direction == "x":
stop()
else:
stop();
speed = int(cmd[1]) * 11
pwm_left.start(speed)
pwm_right.start(speed)
GPIO.cleanup()
get_mods()函数将返回如下CTRL键状态:
如果mods&KMOD\u CTRL:
为了考虑加速度,你可以保留一个速度变量,并每隔几毫秒增加一个加速值,只要按下前进键。当没有压力时,降低速度直到速度为0。
对于汽车的左移,可以使用以下代码
汽车左右移动的机理取决于左电机和右电机的输出。如果左电机处于高位,则车辆将向右移动;如果右电机处于高位,则车辆将向左移动。在
def left():
def right():
^{pr2}$好吧,在网上搜索之后,我在机器人汽车Python程序下找到了一个很好的解决方案。也可以用l29进行测试。在
http://custom-build-robots.com/ebook-download
相关问题 更多 >
编程相关推荐