Untitled
Guest 32 18th Jan, 2025
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)
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():
stop()
GPIO.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