-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmotor_driver.py
More file actions
39 lines (34 loc) · 1.45 KB
/
motor_driver.py
File metadata and controls
39 lines (34 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from RPi import GPIO
from time import sleep
class MotorDriver:
def __init__(self, pwm_pin, forward_pin, reversed_pin):
self.__pwm_pin = pwm_pin # ENx - H-bridge enable pin
self.__forward_pin = forward_pin # IN1 - Forward Drive
self.__reversed_pin = reversed_pin # IN2 - Reverse Drive
GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.OUT) #standby pin
GPIO.output(26, GPIO.HIGH)
GPIO.setup(self.__pwm_pin, GPIO.OUT)
GPIO.setup(self.__forward_pin, GPIO.OUT)
GPIO.setup(self.__reversed_pin, GPIO.OUT)
GPIO.output(self.__forward_pin, GPIO.LOW)
GPIO.output(self.__reversed_pin, GPIO.LOW)
self.__pwm_channel = GPIO.PWM(self.__pwm_pin, 1000)
# negative speed value means driving back
def spin(self, speed):
if speed < 0:
GPIO.output(self.__forward_pin, GPIO.LOW)
GPIO.output(self.__reversed_pin, GPIO.HIGH)
self.__pwm_channel.start(-1 * speed)
else:
GPIO.output(self.__forward_pin, GPIO.HIGH)
GPIO.output(self.__reversed_pin, GPIO.LOW)
self.__pwm_channel.start(speed)
def brake(self):
GPIO.output(self.__forward_pin, GPIO.HIGH)
GPIO.output(self.__reversed_pin, GPIO.HIGH)
self.__pwm_channel.stop()
def stop(self):
GPIO.output(self.__forward_pin, GPIO.LOW)
GPIO.output(self.__reversed_pin, GPIO.LOW)
self.__pwm_channel.stop()