Untitled
unknown
python
5 months ago
3.0 kB
2
Indexable
import gpiod import time # Definicja czipu GPIO chip = gpiod.Chip('gpiochip0') # Definicje pinów dla silników (zgodnie z BCM) motor1_pin1 = 12 # Pin GPIO dla pierwszego kierunku silnika 1 motor1_pin2 = 13 # Pin GPIO dla drugiego kierunku silnika 1 motor2_pin1 = 14 # Pin GPIO dla pierwszego kierunku silnika 2 motor2_pin2 = 15 # Pin GPIO dla drugiego kierunku silnika 2 # Inicjalizacja linii GPIO motor1_line1 = chip.get_line(motor1_pin1) motor1_line2 = chip.get_line(motor1_pin2) motor2_line1 = chip.get_line(motor2_pin1) motor2_line2 = chip.get_line(motor2_pin2) # Konfiguracja linii jako wyjścia motor1_line1.request(consumer="motor1_line1", type=gpiod.LINE_REQ_DIR_OUT) motor1_line2.request(consumer="motor1_line2", type=gpiod.LINE_REQ_DIR_OUT) motor2_line1.request(consumer="motor2_line1", type=gpiod.LINE_REQ_DIR_OUT) motor2_line2.request(consumer="motor2_line2", type=gpiod.LINE_REQ_DIR_OUT) # Funkcja do sterowania pierwszym silnikiem (silnik 1) def control_motor1(direction): if direction == "forward": motor1_line1.set_value(1) motor1_line2.set_value(0) elif direction == "backward": motor1_line1.set_value(0) motor1_line2.set_value(1) # Funkcja do sterowania drugim silnikiem (silnik 2) def control_motor2(direction): if direction == "forward": motor2_line1.set_value(1) motor2_line2.set_value(0) elif direction == "backward": motor2_line1.set_value(0) motor2_line2.set_value(1) # Funkcja zatrzymująca silniki (ustawia piny na 0) def stop_motors(): motor1_line1.set_value(0) motor1_line2.set_value(0) motor2_line1.set_value(0) motor2_line2.set_value(0) # Funkcja testująca silniki def test_motors(): try: while True: # Silnik 1 do przodu, Silnik 2 do tyłu na 2 sekundy print("Silnik 1 do przodu, Silnik 2 do tyłu") control_motor1("forward") control_motor2("backward") time.sleep(2) # Zatrzymanie silników na 1 sekundę print("Zatrzymanie silników") stop_motors() time.sleep(1) # Silnik 1 do tyłu, Silnik 2 do przodu na 2 sekundy print("Silnik 1 do tyłu, Silnik 2 do przodu") control_motor1("backward") control_motor2("forward") time.sleep(2) # Zatrzymanie silników na 1 sekundę print("Zatrzymanie silników") stop_motors() time.sleep(1) except KeyboardInterrupt: print("Test przerwany przez użytkownika.") finally: print("Zatrzymywanie silników i czyszczenie zasobów...") stop_motors() # Zatrzymanie silników motor1_line1.release() # Zwolnienie zasobów GPIO motor1_line2.release() motor2_line1.release() motor2_line2.release() print("Silniki zatrzymane, zasoby zwolnione.") # Wywołanie funkcji testującej test_motors()
Editor is loading...
Leave a Comment