2016-05-19 13 views
0

私は2つのモーターを動かすプロジェクトをしていますが、動きは異なります。コードがあります異なる速度のDCモーターを動かす

import RPi.GPIO as GPIO ## Import GPIO library 
import time ## Import 'time' library. Allows us to use 'sleep' 
import sys 

GPIO.setmode(GPIO.BOARD) ## Use board pin numbering 
GPIO.setup(19, GPIO.OUT) ## Setup GPIO Pin 11(motor b enable) to OUT 
GPIO.setup(16, GPIO.OUT) ## Setup GPIO Pin 11(motor a enable) to OUT 
GPIO.setup(22, GPIO.OUT) ## Setup GPIO Pin 11(motor a control) to OUT 
GPIO.setup(18, GPIO.OUT) ## Setup GPIO Pin 11(motor a control) to OUT 
GPIO.setup(23, GPIO.OUT) ## Setup GPIO Pin 11(motor b control) to OUT 
GPIO.setup(21, GPIO.OUT) ## Setup GPIO Pin 11(motor b control) to OUT 
GPIO.output(16, False)  ## disable motor a 
GPIO.output(19, True)   ## enable motor b 
p=GPIO.PWM(19,50)   ## frequency 50 
p.start(1) 
try: 
    while True: 
      GPIO.output(22, False) ## dont run motor a 
      GPIO.output(18, False)  ## dont run motor a 
      GPIO.output(23, True)  ## run motor b 
      GPIO.output(21, False)   ## run motor b 
      p.ChangeDutyCycle(35)  ## duty cycle 10% 
except KeyboardInterrupt: 
    pass 
p.stop() 
GPIO.cleanup() 
sys.exit() 

コード#2

import RPi.GPIO as GPIO 
from time import sleep 
import sys 

GPIO.setmode(GPIO.BOARD) 

Motor1A = 22 
Motor1B = 18 
Motor1E = 16 

Motor2A = 23 
Motor2B = 21 
Motor2E = 19 

GPIO.setup(Motor1A,GPIO.OUT) 
GPIO.setup(Motor1B,GPIO.OUT) 
GPIO.setup(Motor1E,GPIO.OUT) 

GPIO.setup(Motor2A,GPIO.OUT) 
GPIO.setup(Motor2B,GPIO.OUT) 
GPIO.setup(Motor2E,GPIO.OUT) 

print "Going forwards" 
GPIO.output(Motor1A,GPIO.HIGH) 
GPIO.output(Motor1B,GPIO.LOW) 
GPIO.output(Motor1E,GPIO.HIGH) 

GPIO.output(Motor2A,GPIO.HIGH) 
GPIO.output(Motor2B,GPIO.LOW) 
GPIO.output(Motor2E,GPIO.HIGH) 

sleep(2) 




print "Now stop" 
GPIO.output(Motor1E,GPIO.LOW) 
GPIO.output(Motor2E,GPIO.LOW) 

GPIO.cleanup() 
sys.exit() 

私は1つで両方のコードをミックスしたいです。つまり、これらの2つのコードを2つの異なる速度を持つものに変換します。

それとも誰かが別のコードを知っている場合、私はそれをどのように行うのです

非常に感謝してますか?真剣

答えて

1

gpiozeroを使用し、それがより多くの楽しいとにあなたのコードを回す:次に、あなたはさらに一歩進み、代わりにRobotクラス(ドキュメントhere)を使用し、さらにはすべてのものを作ることができます

from gpiozero import Motor 
from time import sleep 

motorA = Motor(22, 18) # your gpio pins go here 
motorB = Motor(23, 21) 

motorA.forward(0.5) # half speed 
motorB.forward(0.5) 
sleep(2) # wait 2 seconds before stopping the motors 
motorA.stop() 
motorB.stop() 

簡単に:

from gpiozero import Robot 
from time import sleep 

robot = Robot(left=(22, 18), right=(23, 21)) 

robot.forward(1) # full speed 
sleep(2) 
robot.stop() 

ロボットクラスはまた、例えば、いくつかのより多くの機能があります。

robot.left() 
robot.right() 

あなたがまだ使用していない場合は、まずライブラリをインストールする必要があります。ターミナルで次のように入力してください。

pip install gpiozero 
関連する問題