Raspberry Pi Pico: Helligkeit einer LED mit einem 2-Achsen-Joystick einstellen (KY-023)
Das 2-Achsen-Joystick vom Typ KY-023 kann auf der X-Achse und der Y-Achse und auch dazwischen frei bewegt werden. Zusätzlich kann in der Mittelstellung der Joystick als Taster genutzt werden.
Mit dem folgenden Aufbau wollen wir nur die Y-Achse, also hoch und runter verwenden. Wir verwenden diese Achse, um die Helligkeit der Onboard-LED einzustellen. Dem Drucktaster im Joystick geben wir auch eine Funktion. Damit stellen wir die Helligkeit auf den Mittelwert des Joysticks zurück.
Aufbau und Bauteile

| Raspberry Pi Pico | KY-023 | |
|---|---|---|
| Pin 38 | GND | GND |
| Pin 36 | 3V3 OUT | VCC |
| Pin 32 | GPIO 27 (ADC1) | VRX |
| Pin 31 | GPIO 26 (ADC0) | VRY |
| Pin 29 | GPIO 22 | SW |
Schnell und einfach alle Bauteile zusammen bestellen
Programmcode
Nach der Initialisierung des GPIO-Eingangs für den Drucktaster und den ADC für die Y-Achse des Joysticks wird die Onboard-LED mit einem PWM-Signal gesteuert.
Anschließend wird das Joystick in einer Endlos-Schleife ausgewertet. Der ermittelte Wert stellt den Duty-Cycle des PWM-Signals direkt ein. Und der Drucktaster stellt den Wert auf den Mittelwert zurück.
# Bibliotheken laden
from machine import ADC, Pin, PWM
from time import sleep
# GPIO der Onboard-LED
pin_led = 25
# Initialisierung: Button
btn = Pin(22, Pin.IN, Pin.PULL_UP)
# Initialisierung: ADC1 (GPIO27)
adc1 = ADC(1)
value = adc1.read_u16()
# Initialisierung: PWM und Onboard-LED
led = PWM(Pin(pin_led))
led.freq(1000)
led.duty_u16(value)
# Wiederholung (Endlos-Schleife)
while True:
# ADC1 als Dezimalzahl lesen (vertikal)
y = adc1.read_u16()
# Ausgabe in der Kommandozeile/Shell
#print('ADC1:', y)
# Auswertung der Position/Richtung
if y < 29000 and y < value: value = y
elif y > 32000 and y > value: value = y
# Taster-Zustand
if btn.value() == 0: value = adc1.read_u16()
# PWM-Signal ändern
led.duty_u16(value)
# Warten
sleep(0.1)
Hinweis: Wenn man die LED ganz ausmachen will, dann wird das mit diesem Programmcode kaum funktionieren. Das liegt daran, dass man den analogen Wert mit dem Joystick nicht ganz auf 0 bekommt. Man könnte eine Korrektur-Zeile einfügen, die ab einem niedrigen analogen Wert den Wert auf 0 stellt.
Weitere verwandte Themen:
- Raspberry Pi Pico: 2-Achsen-Joystick ansteuern und Position auswerten (KY-023)
- Raspberry Pi Pico: Blink-Geschwindigkeit einer LED mit einem 2-Achsen-Joystick einstellen (KY-023)
- Raspberry Pi Pico: Helligkeit einer LED mit einem Rotary Encoder einstellen (KY-040)
- Raspberry Pi Pico: Blink-Geschwindigkeit einer LED mit einem Rotary Encoder einstellen (KY-040)
Elektronik-Sets für das Hardware-nahe Programmieren
Elektronik-Sets für das Hardware-nahe Programmieren
Online-Meeting
Programmieren mit dem Raspberry Pi Pico
Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.




