-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
65 lines (52 loc) · 2.16 KB
/
Copy pathmain.py
File metadata and controls
65 lines (52 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from gpiozero import RGBLED, Button
from signal import pause
import random
# --- Konfiguration ---
MAX_BRIGHTNESS = 1 # Maximale Helligkeit (0.0 bis 1.0)
PULSE_MODE = True # True, um den Puls-Effekt zu aktivieren
# --- Konfiguration der Pins (BCM Nummerierung) ---
# Make sure to install gpiozero first:
# sudo apt update
# sudo apt install python3-gpiozero
PIN_RED = 17
PIN_GREEN = 27
PIN_BLUE = 22
PIN_BUTTON = 26
# --- Initialisierung ---
# RGB-LED als Common-Anode-Typ initialisieren.
# active_high=False bedeutet, dass ein LOW-Signal (0) die LED einschaltet.
# gpiozero abstrahiert die (0,1)-Logik, wir können Farbwerte von 0 bis 1 setzen.
led = RGBLED(red=PIN_RED, green=PIN_GREEN, blue=PIN_BLUE, active_high=False)
# Button initialisieren.
# pull_up=True ist hier korrekt, da der Button gegen GND geschaltet ist.
# gpiozero kümmert sich intern um das Entprellen (Debouncing).
button = Button(PIN_BUTTON, pull_up=True)
# Zufällige Farbe generieren und setzen
def set_random_color():
"""Generiert eine zufällige Farbe und setzt sie auf der LED."""
r = random.uniform(0, MAX_BRIGHTNESS)
g = random.uniform(0, MAX_BRIGHTNESS)
b = random.uniform(0, MAX_BRIGHTNESS)
print(f"Neue Farbe: R={r:.2f}, G={g:.2f}, B={b:.2f}")
led.color = (r, g, b)
def pulse_random_color():
"""Lässt die LED in einer zufälligen Farbe pulsieren."""
r = random.uniform(0, MAX_BRIGHTNESS)
g = random.uniform(0, MAX_BRIGHTNESS)
b = random.uniform(0, MAX_BRIGHTNESS)
print(f"Pulsierende Farbe: R={r:.2f}, G={g:.2f}, B={b:.2f}")
led.pulse(fade_in_time=3, fade_out_time=3, on_color=(r, g, b), off_color=(0, 0, 0), n=1, background=True)
# --- Event-Handler ---
# Die Funktion 'set_random_color' oder 'pulse_random_color' wird aufgerufen, wenn der Button gedrückt wird.
if PULSE_MODE:
button.when_pressed = pulse_random_color
else:
button.when_pressed = set_random_color
# --- Hauptprogramm ---
print("Programm gestartet! Drücke den Button, um die Farbe zu ändern.")
print("Drücke Strg+C, um das Programm zu beenden.")
# Startzustand: LED aus
led.off()
# Das Programm anhalten und auf Events warten.
# gpiozero gibt die Pins beim Beenden automatisch frei.
pause()