我有一辆带2直流电动机的机器人车 连接到RPi 3 b和直流电动机的直流编码器 我想让机器人根据编码器测量的转数移动。以便 机器人移动和编码器开始测量 当旋转5圈时,机器人将停止, 现在我的问题是我不能右转或左转,该怎么做 我用python和RPi
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(31,GPIO.IN)
GPIO.setup(29,GPIO.IN)
GPIO.setup(12,GPIO.OUT)
GPIO.setup(16,GPIO.OUT)
GPIO.setup(35,GPIO.OUT)
GPIO.setup(33,GPIO.OUT)
pwm=20
frequency=70000
right=GPIO.PWM(12,frequency)
left=GPIO.PWM(33,frequency)
left.start(0)
right.start(0)
def on():
right.ChangeDutyCycle(pwm)
left.ChangeDutyCycle(pwm)
def off():
right.ChangeDutyCycle(0)
left.ChangeDutyCycle(0)
prv=0
i=0
while True:
on()
if(GPIO.input(31)==(1) and GPIO.input(29)==(1)):
print"something"
if prv==0:
prv=1
i=i+1
print"hole"+ str(i)+"times"
if i==50
off()
break
else:
print"button not pushed"
prv=0
答案 0 :(得分:0)
向左或向右转动是打开一个电动机而不是两个电动机的问题(或者一侧比另一侧更快)。您可以尝试编写函数 if (flipY) {
float temp = vertices[V1];
vertices[V1] = vertices[V3];
vertices[V3] = temp;
temp = vertices[V2];
vertices[V2] = vertices[V4];
vertices[V4] = temp;
}
和turnleft()
并在循环中运行它们(将它们挂接到按钮或其他东西上)。
用于左转的功能如下所示:
turnright()