L288N驱动马达及接线方法
import RPi.GPIO as GPIO
import time
import sys
import tty
import termios
GPIO.setmode(GPIO.BCM)
IN1 = 17
IN2 = 27
ENA = 18
GPIO.setup(IN1, GPIO.OUT)
GPIO.setup(IN2, GPIO.OUT)
GPIO.setup(ENA, GPIO.OUT)
pwm = GPIO.PWM(ENA, 100)
pwm.start(0)
def getch():
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(fd)
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
try:
print("按 w:正转, s:反转, a:加速, z:减速, q:退出")
speed = 50 # 初始速度 50%
while True:
key = getch()
if key == 'w': # 正转
print("正转")
GPIO.output(IN1, GPIO.HIGH)
GPIO.output(IN2, GPIO.LOW)
pwm.ChangeDutyCycle(speed)
elif key == 's': # 反转
print("反转")
GPIO.output(IN1, GPIO.LOW)
GPIO.output(IN2, GPIO.HIGH)
pwm.ChangeDutyCycle(speed)
elif key == 'a': # 加速
speed = min(100, speed + 10)
print(f"速度: {speed}%")
pwm.ChangeDutyCycle(speed)
elif key == 'z': # 减速
speed = max(0, speed - 10)
print(f"速度: {speed}%")
pwm.ChangeDutyCycle(speed)
elif key == 'q': # 退出
print("退出")
break
finally:
pwm.stop()
GPIO.cleanup()
IN1 → 物理引脚 11
IN2 → 物理引脚 13
ENA → 物理引脚 12
GND → 物理引脚 6
发表回复