首页 > 解决方案 > python - 如何使用直流电机的编码器测量来控制机器人的运动?

问题描述

我有一辆带有 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

标签: python

解决方案


向左或向右转是打开其中一个电机而不是同时打开两个电机(或一侧比另一侧运行得更快)的问题。您可以尝试编写函数turnleft()turnright()在循环中运行它们(将它们连接到按钮或其他东西)。

左转函数如下所示:

def turnleft():
    right.ChangeDutyCycle(pwm)
    left.ChangeDutyCycle(0)

推荐阅读