avatar
Untitled

Guest 55 18th Jan, 2025

MARKUP 2.96 KB
                                           
                         import RPi.GPIO as GPIO
import time
import tkinter as tk
from tkinter import ttk

# 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)

# Funkcja do całkowitego wyłączenia silników i PWM
def cleanup():
    stop()
    pwmA.stop()
    pwmB.stop()
    GPIO.cleanup()

def on_forward():
    speed = speed_slider.get()
    forward(speed)

def on_backward():
    speed = speed_slider.get()
    backward(speed)

def on_stop():
    stop()

# Tworzenie GUI za pomocą Tkinter
root = tk.Tk()
root.title("Sterowanie Silnikami")

# Suwak do ustawiania prędkości
speed_label = tk.Label(root, text="Prędkość:")
speed_label.pack()
speed_slider = ttk.Scale(root, from_=0, to=100, orient="horizontal", length=300)
speed_slider.set(50)  # Domyślna prędkość 50%
speed_slider.pack()

# Przyciski do sterowania
forward_button = tk.Button(root, text="Do przodu", command=on_forward)
forward_button.pack(pady=10)

backward_button = tk.Button(root, text="Do tyłu", command=on_backward)
backward_button.pack(pady=10)

stop_button = tk.Button(root, text="Stop", command=on_stop)
stop_button.pack(pady=10)

# Obsługa zamknięcia programu
def on_close():
    cleanup()
    root.destroy()

root.protocol("WM_DELETE_WINDOW", on_close)

# Uruchomienie głównej pętli GUI
root.mainloop()
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data
Recent Pastes
Ta strona używa plików cookie w celu usprawnienia i ułatwienia dostępu do serwisu oraz prowadzenia danych statystycznych. Dalsze korzystanie z tej witryny oznacza akceptację tego stanu rzeczy.
Wykorzystywanie plików Cookie
Jak wyłączyć cookies?
ROZUMIEM