from machine import Pin, ADC
import utime
from neopixel import NeoPixel
# Setup WS2812 LED Ringe und Strip
NUM_LEDS_EYES = 16
NUM_LEDS_BELLY = 32
led_pin_eyes = Pin(0, Pin.OUT)
led_pin_belly = Pin(1, Pin.OUT)
eyes_left = NeoPixel(led_pin_eyes, NUM_LEDS_EYES)
eyes_right = NeoPixel(led_pin_eyes, NUM_LEDS_EYES)
belly = NeoPixel(led_pin_belly, NUM_LEDS_BELLY)
# Setup Potentiometer für Helligkeitssteuerung
potentiometer = ADC(Pin(26))
# Setup Keypad (4x4 Matrix)
keypad_pins = [
[Pin(2, Pin.OUT), Pin(3, Pin.OUT), Pin(4, Pin.OUT), Pin(5, Pin.OUT)],
[Pin(6, Pin.IN, Pin.PULL_DOWN), Pin(7, Pin.IN, Pin.PULL_DOWN), Pin(8, Pin.IN, Pin.PULL_DOWN), Pin(9, Pin.IN, Pin.PULL_DOWN)]
]
keypad_keys = [['1', '2', '3', 'A'],
['4', '5', '6', 'B'],
['7', '8', '9', 'C'],
['*', '0', '#', 'D']]
# Funktion zur Helligkeitsteuerung
def get_brightness():
return potentiometer.read_u16() // 256 # 0 bis 255
# LED-Farben setzen
def set_color(led_strip, r, g, b):
for i in range(len(led_strip)):
led_strip[i] = (r, g, b)
led_strip.write()
# Leuchtmodi
def mode_off():
set_color(eyes_left, 0, 0, 0)
set_color(eyes_right, 0, 0, 0)
set_color(belly, 0, 0, 0)
def mode_breathing():
for brightness in range(0, 255, 5):
set_color(eyes_left, brightness, 0, 0)
set_color(eyes_right, brightness, 0, 0)
set_color(belly, brightness, brightness, 0)
utime.sleep(0.05)
for brightness in range(255, 0, -5):
set_color(eyes_left, brightness, 0, 0)
set_color(eyes_right, brightness, 0, 0)
set_color(belly, brightness, brightness, 0)
utime.sleep(0.05)
def mode_rainbow():
for i in range(255):
for j in range(NUM_LEDS_EYES):
eyes_left[j] = wheel((i + j) & 255)
eyes_right[j] = wheel((i + j) & 255)
for k in range(NUM_LEDS_BELLY):
belly[k] = wheel((i + k) & 255)
eyes_left.write()
eyes_right.write()
belly.write()
utime.sleep(0.05)
def mode_spooky():
for _ in range(10):
set_color(eyes_left, 255, 0, 0) # Rote Augen
set_color(eyes_right, 255, 0, 0)
set_color(belly, 0, 0, 0)
utime.sleep(0.1)
set_color(eyes_left, 0, 0, 0) # Augen aus
set_color(eyes_right, 0, 0, 0)
utime.sleep(0.1)
# Farben für den Regenbogenmodus generieren
def wheel(pos):
if pos < 85:
return (pos * 3, 255 - pos * 3, 0)
elif pos < 170:
pos -= 85
return (255 - pos * 3, 0, pos * 3)
else:
pos -= 170
return (0, pos * 3, 255 - pos * 3)
# Tasteneingaben verarbeiten
def read_keypad():
for row_num, row in enumerate(keypad_pins[0]):
row.value(1)
for col_num, col in enumerate(keypad_pins[1]):
if col.value() == 1:
row.value(0)
return keypad_keys[row_num][col_num]
row.value(0)
return None
# Hauptprogramm
def main():
current_mode = 'A' # Start im ausgeschalteten Modus
while True:
key = read_keypad()
brightness = get_brightness()
if key:
current_mode = key
if current_mode == 'A':
mode_off()
elif current_mode == '1':
mode_breathing() # Entspannendes Ein- und Ausatmen
elif current_mode == '2':
mode_rainbow() # Farbdurchlauf (Regenbogen)
elif current_mode == '3':
mode_spooky() # Gruselmodus mit roten Augen
elif current_mode == 'B':
# Weitere Modi kannst du hier hinzufügen
pass
utime.sleep(0.1)
main()