pythonでモータドライバ経由でモータ制御するやつ
Ta7291をつないでいるピンを指定する
引数の速さで回転。 逆転時は負数を指定。
ブレーキ、急停止したいときつかう
以下画像を参照されたし
pythonでモータドライバ経由でモータ制御するやつ
Ta7291をつないでいるピンを指定する
引数の速さで回転。 逆転時は負数を指定。
ブレーキ、急停止したいときつかう
以下画像を参照されたし
| #!/usr/bin/python | |
| # -*- coding: utf-8 -*- | |
| import RPi.GPIO as GPIO | |
| import time | |
| import sys | |
| class Ta7291: | |
| ''' | |
| Motor driver TA7291 class | |
| ''' | |
| def __init__(self, pwm_pin, input_pin1, input_pin2): | |
| GPIO.setmode(GPIO.BCM) | |
| GPIO.setup(pwm_pin, GPIO.OUT) | |
| GPIO.setup(input_pin1, GPIO.OUT) | |
| GPIO.setup(input_pin2, GPIO.OUT) | |
| self.in1 = input_pin1 | |
| self.in2 = input_pin2 | |
| self.pwm = GPIO.PWM(18, 50) | |
| def drive(self, speed): | |
| ''' | |
| driving motor | |
| speed : from -100 to 100 | |
| ''' | |
| isForward = speed > 0 | |
| output1 = 1 if isForward else 0 | |
| output2 = 0 if isForward else 1 | |
| GPIO.output(self.in1, output1) | |
| GPIO.output(self.in2, output2) | |
| self.pwm.start(abs(speed)) | |
| def brake(self): | |
| ''' | |
| set motor to init position | |
| ''' | |
| GPIO.output(self.in1, 1) | |
| GPIO.output(self.in2, 1) | |
| time.sleep(0.5) | |
| def cleanup(self): | |
| ''' | |
| cleanning GPIO | |
| ''' | |
| self.brake() | |
| GPIO.cleanup() | |
| if __name__ == "__main__": | |
| pass |
| #!/usr/bin/python | |
| # -*- coding: utf-8 -*- | |
| import RPi.GPIO as GPIO | |
| import time | |
| import sys | |
| import Ta7291 | |
| if __name__ == "__main__": | |
| d = Ta7291.Ta7291(18, 24, 25) | |
| print "Speed up" | |
| for power in range(0, 100, 10): | |
| d.drive(power) | |
| time.sleep(0.3) | |
| time.sleep(1) | |
| print "Speed down" | |
| for power in range(100, 0, -10): | |
| d.drive(power) | |
| time.sleep(0.3) | |
| time.sleep(1) | |
| print "Stop" | |
| d.drive(0) | |
| time.sleep(1) | |
| print "Drive, and brake..." | |
| d.drive(100) | |
| time.sleep(3) | |
| d.brake() | |
| time.sleep(1) | |
| print "Cleanup in end of execution" | |
| d.cleanup() |