Connect the motor drive board and Raspberry Pi according to the wiring diagram, connect the battery to the power input interface on motor drive module.
Note: The motor interface wire sequence of the dual motor drive board should correspond to the motor pin! Otherwise, the motor drive plate will be damaged.
Note: The motor interface wire sequence of the dual motor drive board.
ximport RPi.GPIO as GPIO #Import Library
import time
GPIO.setmode(GPIO.BCM) #Set pin
AIN1 = 17
AIN2 = 18
BIN1 = 22
BIN2 = 23
GPIO.setwarnings(False) #Remove warning
GPIO.setup(AIN1, GPIO.OUT) #Pin set to output
p1 = GPIO.PWM(AIN1, 50) #50 is the frequency of 50 Hz
p1.start(0)
GPIO.setup(AIN2, GPIO.OUT)
p2 = GPIO.PWM(AIN2, 50)
p2.start(0)
GPIO.setup(BIN1, GPIO.OUT)
p3 = GPIO.PWM(BIN1, 50)
p3.start(0)
GPIO.setup(BIN2, GPIO.OUT)
p4 = GPIO.PWM(BIN2, 50)
p4.start(0)
# The rotation speed of the motor can be changed by changing the value in the brackets. The value range is 0~100
def forward(time_sleep): #Forward for a few seconds
p1.start(0)
p2.start(50)
p3.start(0)
p4.start(50)
time.sleep(time_sleep)
def stop(): #Stop it
p1.start(0)
p2.start(0)
p3.start(0)
p4.start(0)
spin_count = 0
spin_count2 = 0
E1A = 20 #Set pin
E1B = 21
E2A=26
E2B=27
GPIO.setmode(GPIO.BCM)
GPIO.setup(E1B, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(E1A, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(E2B, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(E2A, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def my_callback(channel): #Callback function
global spin_count
if GPIO.input(E1A):
if not GPIO.input(E1B):
spin_count += 1
elif GPIO.input(E1B):
spin_count -= 1
print(spin_count)
def my_callback2(channel):
global spin_count2
if GPIO.input(E2A):
if not GPIO.input(E2B):
spin_count2 += 1
elif GPIO.input(E2B):
spin_count2 -= 1
print(spin_count2)
GPIO.add_event_detect(E1A, GPIO.RISING, callback=my_callback)
GPIO.add_event_detect(E2A, GPIO.RISING, callback=my_callback2)
forward(5) #Forward rotation for 5s
stop() #Stop it
Run the program, the motor drive board drives the two-way motor to rotate for 5s, and the terminal prints the speed of the motor.