ZUSAMMENFASSUNG: Wir verwenden den Drehencoder, um die Farbe und Helligkeit unserer vier LEDs zu steuern. Durch das Drehen des Encoders wechseln
die Helligkeit, während ein Druck auf den Encoder die Farbe der LEDs anpasst.
from
machine
import
Pin
import
utime
import
neopixel
# Neopixel setup
NUM_LEDS
=
4
PIXEL_PIN
=
1
np
=
neopixel.NeoPixel(Pin(PIXEL_PIN), NUM_LEDS)
# Drehencoder setup
PIN_CLK
=
Pin(16, Pin.IN, Pin.PULL_UP)
PIN_DT
=
Pin(17, Pin.IN, Pin.PULL_UP)
BUTTON_PIN
=
Pin(15, Pin.IN, Pin.PULL_UP)
# Globale Variablen
counter
=
0
PIN_CLK_LAST
=
PIN_CLK.value()
delayTime
=
0.001
debounce_time_encoder
=
0
debounce_time_button
=
0
# Farben initialisieren
colors
=
[(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 255, 255)]
Blau, Weiß
color_index
=
0
# Helligkeit initialisieren
brightness_levels
=
[0.2, 0.4, 0.6, 0.8, 1.0]
brightness_index
=
0
def
update_leds(color, brightness):
dimmed_color
=
tuple([int(c
for
i
in
range(NUM_LEDS):
np[i]
=
dimmed_color
np.write()
def
rotaryFunction(null):
global
counter, brightness_index, debounce_time_encoder
PIN_CLK_CURRENT
=
PIN_CLK.value()
if
PIN_CLK_CURRENT
!=
PIN_CLK_LAST
encoder)
>
300:
if
PIN_DT.value()
!=
PIN_CLK_CURRENT:
brightness_index
=
else:
brightness_index
=
update_leds(colors[color_index], brightness_levels[brightness_index])
debounce_time_encoder
=
*
brightness)
for
c
in
color])
and
(utime.ticks_ms()
-
debounce_time_
(brightness_index
+
1)
%
len(brightness_levels)
(brightness_index
-
1)
%
len(brightness_levels)
utime.ticks_ms()
# Rot, Grün,
Initialisierung der LEDs und des
Drehencoders
Funktion für den Drehencoder
30