Raspberry Pi Pico: Blink-Geschwindigkeit 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 Blink-Geschwindigkeit der Onboard-LED einzustellen.
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 Timer an- und ausgeschaltet. Das heißt, die LED blinkt.
In einer Endlos-Schleife wird die Position des Joysticks auf der Y-Achse mit dem ADC-Eingang laufend gelesen und dieser Wert in eine Periodendauer umgerechnet, das der Blink-Geschwindigkeit entspricht. Mit dieser Blink-Geschwindigkeit wird der Timer neu gesetzt.
# Bibliotheken laden
from machine import ADC, Pin, Timer
from time import sleep
# Start-Blink-Geschwindigkeit
value_p = 300
# Initialisierung: GPIO25 als Ausgang
led = Pin(25, Pin.OUT)
# Initialisierung: ADC1 (GPIO27)
adc1 = ADC(1)
value = adc1.read_u16()
# Initialisierung: Timer
blink = Timer(mode=Timer.PERIODIC, period=value_p, callback=lambda t: led.value(not led.value()))
# Wiederholung (Endlos-Schleife)
while True:
# ADC0 als Dezimalzahl lesen (vertikal)
y = adc1.read_u16() + 1
#print('ADC1:', y)
# Auswerten und umrechnen
if y < 29000 and y < value:
value = y
value_p = int(y / 128) + 1
# Timer ändern
blink.deinit()
blink.init(mode=Timer.PERIODIC, period=value_p, callback=lambda t: led.value(not led.value()))
elif y > 32000 and y > value:
value = y
value_p = int(y / 128)
# Timer ändern
blink.deinit()
blink.init(mode=Timer.PERIODIC, period=value_p, callback=lambda t: led.value(not led.value()))
#print(value, '/', value_p)
sleep(0.2)
Weitere verwandte Themen:
- Raspberry Pi Pico: 2-Achsen-Joystick ansteuern und Position auswerten (KY-023)
- Raspberry Pi Pico: Helligkeit 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.




