from machine import ADC, Pin, PWM from utime import sleep # Konfiguration led = PWM(Pin(8)) led.freq(1000) # Frequenz für sauberes Dimmen adc_lx = ADC(Pin(26)) adc_ly = ADC(Pin(27)) adc_rx = ADC(Pin(28)) adc_ry = ADC(Pin(29)) def get_brightness(val): # Deadzone (32500 - 34500) -> LED AUS if 32500 <= val <= 34500: return 0 # Mapping auf Helligkeit 0-65535 # Wir berechnen die Abweichung vom Zentrum (33500) # und skalieren diese auf den vollen Bereich diff = abs(val - 33500) # Da 300 und 65535 ca. 33000 Einheiten vom Zentrum entfernt sind: brightness = min(diff * 2, 65535) return brightness while True: lx = adc_lx.read_u16() ly = adc_ly.read_u16() rx = adc_rx.read_u16() ry = adc_ry.read_u16() # Ermittle das Maximum der vier Achsen # (Heller werden, sobald irgendein Stick bewegt wird) max_val = max(get_brightness(lx), get_brightness(ly), get_brightness(rx), get_brightness(ry)) led.duty_u16(max_val) sleep(0.05) # Kurzes Intervall für flüssige Reaktion