import RPi.GPIO as GPIO
import time
#Ustawienie trybu numeracji pinów GPIO
GPIO.setmode(GPIO.BCM)
# Definicja pinów sterownika L298N
enA = 2 # Pin PWM dla silnika A
in1 = 3 # Pin kierunku 1 dla silnika A
in2 = 4 # Pin kierunku 2 dla silnika A
enB = 17 # Pin PWM dla silnika B
in3 = 27 # Pin kierunku 1 dla silnika B
in4 = 22 # Pin kierunku 2 dla silnika B
# Konfiguracja pinów jako wyjścia
GPIO.setup(enA, GPIO.OUT)
GPIO.setup(in1, GPIO.OUT)
GPIO.setup(in2, GPIO.OUT)
GPIO.setup(enB, GPIO.OUT)
GPIO.setup(in3, GPIO.OUT)
GPIO.setup(in4, GPIO.OUT)
# Konfiguracja PWM (częstotliwość 100 Hz)
pwmA = GPIO.PWM(enA, 100)
pwmB = GPIO.PWM(enB, 100)
# Uruchomienie PWM z początkową wartością 0%
pwmA.start(0)
pwmB.start(0)
def forward(speed):
"""Funkcja do jazdy do przodu."""
GPIO.output(in1, GPIO.HIGH)
GPIO.output(in2, GPIO.LOW)
GPIO.output(in3, GPIO.HIGH)
GPIO.output(in4, GPIO.LOW)
pwmA.ChangeDutyCycle(speed)
pwmB.ChangeDutyCycle(speed)
def backward(speed):
"""Funkcja do jazdy do tyłu."""
GPIO.output(in1, GPIO.LOW)
GPIO.output(in2, GPIO.HIGH)
GPIO.output(in3, GPIO.LOW)
GPIO.output(in4, GPIO.HIGH)
pwmA.ChangeDutyCycle(speed)
pwmB.ChangeDutyCycle(speed)
def stop():
"""Funkcja do zatrzymania silników."""
GPIO.output(in1, GPIO.LOW)
GPIO.output(in2, GPIO.LOW)
GPIO.output(in3, GPIO.LOW)
GPIO.output(in4, GPIO.LOW)
pwmA.ChangeDutyCycle(0)
pwmB.ChangeDutyCycle(0)
try:
while True:
print("Jazda do przodu")
forward(50) # Prędkość 50%
time.sleep(2)
print("Jazda do tyłu")
backward(50) # Prędkość 50%
time.sleep(2)
print("Stop")
stop()
time.sleep(1)
except KeyboardInterrupt:
print("Zatrzymanie programu...")
stop()
GPIO.cleanup()
Paste Hosted With By Wklejamy.pl