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

评论

0条评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注