Загрузка данных


import RPi.GPIO as GPIO
import time

# --- Настройка GPIO ---
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

# Пины для каждого колеса (пара: вперёд/назад)
# Левая сторона
LF = (9, 11)    # Left Front
LR = (25, 8)    # Left Rear

# Правая сторона
RF = (26, 19)   # Right Front
RR = (20, 16)   # Right Rear

# Все пины — выходы
all_pins = LF + LR + RF + RR
GPIO.setup(all_pins, GPIO.OUT)

def set_wheel(pins, direction):
    """
    Управление одним колесом.
    pins: кортеж из двух пинов (forward_pin, backward_pin)
    direction: 1 — вперёд, -1 — назад, 0 — стоп
    """
    fwd, bwd = pins
    if direction > 0:
        GPIO.output(fwd, GPIO.HIGH)
        GPIO.output(bwd, GPIO.LOW)
    elif direction < 0:
        GPIO.output(fwd, GPIO.LOW)
        GPIO.output(bwd, GPIO.HIGH)
    else:
        GPIO.output(fwd, GPIO.LOW)
        GPIO.output(bwd, GPIO.LOW)

def stop_all():
    """Остановить все колёса."""
    for pins in (LF, LR, RF, RR):
        set_wheel(pins, 0)

def forward():
    """Движение вперёд — все колёса вперёд."""
    set_wheel(LF, 1)
    set_wheel(LR, 1)
    set_wheel(RF, 1)
    set_wheel(RR, 1)

def backward():
    """Движение назад — все колёса назад."""
    set_wheel(LF, -1)
    set_wheel(LR, -1)
    set_wheel(RF, -1)
    set_wheel(RR, -1)

def turn_left():
    """Поворот налево — левые колёса назад, правые вперёд."""
    set_wheel(LF, -1)
    set_wheel(LR, -1)
    set_wheel(RF, 1)
    set_wheel(RR, 1)

def turn_right():
    """Поворот направо — левые колёса вперёд, правые назад."""
    set_wheel(LF, 1)
    set_wheel(LR, 1)
    set_wheel(RF, -1)
    set_wheel(RR, -1)

# --- Тестовая программа ---
if __name__ == "__main__":
    try:
        print("Тест 4 колёс. Ctrl+C для выхода.")
        
        print("Вперёд")
        forward()
        time.sleep(2)
        stop_all()
        time.sleep(1)
        
        print("Назад")
        backward()
        time.sleep(2)
        stop_all()
        time.sleep(1)
        
        print("Поворот налево")
        turn_left()
        time.sleep(1.5)
        stop_all()
        time.sleep(1)
        
        print("Поворот направо")
        turn_right()
        time.sleep(1.5)
        stop_all()
        time.sleep(1)
        
        print("Тест завершён.")
        
    except KeyboardInterrupt:
        print("\nОстановка по Ctrl+C.")
    finally:
        stop_all()
        GPIO.cleanup()
        print("GPIO очищены.")