Untitled

 avatar
unknown
python
5 months ago
2.4 kB
4
Indexable
import RPi.GPIO as GPIO
import time

# Konfiguracja pinów GPIO
GPIO.setmode(GPIO.BCM)  # U?ywamy numeracji BCM (nie fizycznej numeracji pinów)
GPIO.setwarnings(False)

# Definicje pinów dla silników
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

# Ustawianie pinów jako wyj?cia
GPIO.setup(motor1_pin1, GPIO.OUT)
GPIO.setup(motor1_pin2, GPIO.OUT)
GPIO.setup(motor2_pin1, GPIO.OUT)
GPIO.setup(motor2_pin2, GPIO.OUT)

# Konfiguracja PWM
pwm_motor1_pin1 = GPIO.PWM(motor1_pin1, 1000)  # 1000 Hz dla PWM
pwm_motor1_pin2 = GPIO.PWM(motor1_pin2, 1000)
pwm_motor2_pin1 = GPIO.PWM(motor2_pin1, 1000)
pwm_motor2_pin2 = GPIO.PWM(motor2_pin2, 1000)

# Start PWM z wype?nieniem 0 (wy??czony silnik)
pwm_motor1_pin1.start(0)
pwm_motor1_pin2.start(0)
pwm_motor2_pin1.start(0)
pwm_motor2_pin2.start(0)

# Funkcja do sterowania pierwszym silnikiem (silnik 1)
def control_motor1(speed, direction):
    if direction == "forward":
        pwm_motor1_pin1.ChangeDutyCycle(speed)
        pwm_motor1_pin2.ChangeDutyCycle(0)
    elif direction == "backward":
        pwm_motor1_pin1.ChangeDutyCycle(0)
        pwm_motor1_pin2.ChangeDutyCycle(speed)

# Funkcja do sterowania drugim silnikiem (silnik 2)
def control_motor2(speed, direction):
    if direction == "forward":
        pwm_motor2_pin1.ChangeDutyCycle(speed)
        pwm_motor2_pin2.ChangeDutyCycle(0)
    elif direction == "backward":
        pwm_motor2_pin1.ChangeDutyCycle(0)
        pwm_motor2_pin2.ChangeDutyCycle(speed)

try:
    while True:
        # Przyk?ad dzia?ania:
        # Silnik 1 do przodu z 50% pr?dko?ci?
        control_motor1(50, "forward")
        # Silnik 2 do ty?u z 70% pr?dko?ci?
        control_motor2(70, "backward")
        time.sleep(5)

        # Zmiana kierunku
        control_motor1(50, "backward")
        control_motor2(70, "forward")
        time.sleep(5)

except KeyboardInterrupt:
    pass  # Przerywamy program gdy u?ytkownik naci?nie Ctrl+C

# Czyszczenie ustawie? GPIO po zako?czeniu programu
pwm_motor1_pin1.stop()
pwm_motor1_pin2.stop()
pwm_motor2_pin1.stop()
pwm_motor2_pin2.stop()
GPIO.cleanup()
Editor is loading...
Leave a Comment