Initial push
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
import RPi.GPIO as GPIO
|
||||
import time
|
||||
|
||||
class AlphaBot2(object):
|
||||
|
||||
def __init__(self,ain1=12,ain2=13,ena=6,bin1=20,bin2=21,enb=26):
|
||||
self.AIN1 = ain1
|
||||
self.AIN2 = ain2
|
||||
self.BIN1 = bin1
|
||||
self.BIN2 = bin2
|
||||
self.ENA = ena
|
||||
self.ENB = enb
|
||||
self.PA = 50
|
||||
self.PB = 50
|
||||
|
||||
GPIO.setmode(GPIO.BCM)
|
||||
GPIO.setwarnings(False)
|
||||
GPIO.setup(self.AIN1,GPIO.OUT)
|
||||
GPIO.setup(self.AIN2,GPIO.OUT)
|
||||
GPIO.setup(self.BIN1,GPIO.OUT)
|
||||
GPIO.setup(self.BIN2,GPIO.OUT)
|
||||
GPIO.setup(self.ENA,GPIO.OUT)
|
||||
GPIO.setup(self.ENB,GPIO.OUT)
|
||||
self.PWMA = GPIO.PWM(self.ENA,500)
|
||||
self.PWMB = GPIO.PWM(self.ENB,500)
|
||||
self.PWMA.start(self.PA)
|
||||
self.PWMB.start(self.PB)
|
||||
self.stop()
|
||||
|
||||
def forward(self):
|
||||
self.PWMA.ChangeDutyCycle(self.PA)
|
||||
self.PWMB.ChangeDutyCycle(self.PB)
|
||||
GPIO.output(self.AIN1,GPIO.LOW)
|
||||
GPIO.output(self.AIN2,GPIO.HIGH)
|
||||
GPIO.output(self.BIN1,GPIO.LOW)
|
||||
GPIO.output(self.BIN2,GPIO.HIGH)
|
||||
|
||||
|
||||
def stop(self):
|
||||
self.PWMA.ChangeDutyCycle(0)
|
||||
self.PWMB.ChangeDutyCycle(0)
|
||||
GPIO.output(self.AIN1,GPIO.LOW)
|
||||
GPIO.output(self.AIN2,GPIO.LOW)
|
||||
GPIO.output(self.BIN1,GPIO.LOW)
|
||||
GPIO.output(self.BIN2,GPIO.LOW)
|
||||
|
||||
def backward(self):
|
||||
self.PWMA.ChangeDutyCycle(self.PA)
|
||||
self.PWMB.ChangeDutyCycle(self.PB)
|
||||
GPIO.output(self.AIN1,GPIO.HIGH)
|
||||
GPIO.output(self.AIN2,GPIO.LOW)
|
||||
GPIO.output(self.BIN1,GPIO.HIGH)
|
||||
GPIO.output(self.BIN2,GPIO.LOW)
|
||||
|
||||
|
||||
def left(self):
|
||||
self.PWMA.ChangeDutyCycle(30)
|
||||
self.PWMB.ChangeDutyCycle(30)
|
||||
GPIO.output(self.AIN1,GPIO.HIGH)
|
||||
GPIO.output(self.AIN2,GPIO.LOW)
|
||||
GPIO.output(self.BIN1,GPIO.LOW)
|
||||
GPIO.output(self.BIN2,GPIO.HIGH)
|
||||
|
||||
|
||||
def right(self):
|
||||
self.PWMA.ChangeDutyCycle(30)
|
||||
self.PWMB.ChangeDutyCycle(30)
|
||||
GPIO.output(self.AIN1,GPIO.LOW)
|
||||
GPIO.output(self.AIN2,GPIO.HIGH)
|
||||
GPIO.output(self.BIN1,GPIO.HIGH)
|
||||
GPIO.output(self.BIN2,GPIO.LOW)
|
||||
|
||||
def setPWMA(self,value):
|
||||
self.PA = value
|
||||
self.PWMA.ChangeDutyCycle(self.PA)
|
||||
|
||||
def setPWMB(self,value):
|
||||
self.PB = value
|
||||
self.PWMB.ChangeDutyCycle(self.PB)
|
||||
|
||||
def setMotor(self, left, right):
|
||||
if((right >= 0) and (right <= 100)):
|
||||
GPIO.output(self.AIN1,GPIO.HIGH)
|
||||
GPIO.output(self.AIN2,GPIO.LOW)
|
||||
self.PWMA.ChangeDutyCycle(right)
|
||||
elif((right < 0) and (right >= -100)):
|
||||
GPIO.output(self.AIN1,GPIO.LOW)
|
||||
GPIO.output(self.AIN2,GPIO.HIGH)
|
||||
self.PWMA.ChangeDutyCycle(0 - right)
|
||||
if((left >= 0) and (left <= 100)):
|
||||
GPIO.output(self.BIN1,GPIO.HIGH)
|
||||
GPIO.output(self.BIN2,GPIO.LOW)
|
||||
self.PWMB.ChangeDutyCycle(left)
|
||||
elif((left < 0) and (left >= -100)):
|
||||
GPIO.output(self.BIN1,GPIO.LOW)
|
||||
GPIO.output(self.BIN2,GPIO.HIGH)
|
||||
self.PWMB.ChangeDutyCycle(0 - left)
|
||||
|
||||
if __name__=='__main__':
|
||||
|
||||
Ab = AlphaBot2()
|
||||
Ab.forward()
|
||||
try:
|
||||
while True:
|
||||
time.sleep(1)
|
||||
except KeyboardInterrupt:
|
||||
GPIO.cleanup()
|
||||
Reference in New Issue
Block a user