Raspberry Pi Pico: Unterbrechungserkennung mit Lichtschranke KY-010
Der optische Unterbrechungssensor vom Typ KY-010 funktioniert wie eine Lichtschranke. Das Funktionsprinzip ist eine Infrarot-Lichtquelle in Form einer LED, die auf einen Infrarot-Fototransistor ausgerichtet ist. Allerdings ist diese Bauform in ihren Nutzungsmöglichkeiten eingeschränkt. Um mit einer Unterbrechungserkennung zu Experimentieren, ist er jedoch sehr gut geeignet.
Dabei gibt es zwei Möglichkeiten der Auswertung:
- Unterbrechung des IR-Signals
- Herstellen der IR-Signals
Es geht um die Frage, was der Normalzustand ist. Die Unterbrechung oder die freie IR-Signalstrecke? Entsprechend wertet man die Veränderung aus.
Aufbau und Bauteile

| Raspberry Pi Pico | KY-010 | |
|---|---|---|
| Pin 36 | 3V3 OUT | VCC |
| Pin 38 | GND | - (GND) |
| Pin 20 | GPIO 16 | S |
Programmcode: Unterbrechungserkennung mit Endlos-Schleife
Im folgenden Programmcode wird in einer Endlos-Schleife nach „1“ ausgewertet. In diesem Fall hat der Sensor eine Unterbrechung erkannt und die Onboard-LED leuchtet auf. Man könnte den Sensor natürlich auch nach „0“ auswerten.
Die Werte „0“ und „1“ werden kontinuierlich auf der Kommandozeile ausgeben.
# Bibliotheken laden
from machine import Pin
from time import sleep
# Initialisierung: Onboard-LED
led_onboard = Pin(25, Pin.OUT, value=0)
# Initialisierung: GPIO16 als Eingang
sensor_d = Pin(16, Pin.IN)
# Wiederholung (Endlos-Schleife)
while True:
value_d = sensor_d.value()
print(value_d)
if value_d == 1:
led_onboard.on()
else:
led_onboard.off()
sleep(0.2)
Programmcode: Unterbrechungserkennung mit Interrupt
Im folgenden Programmcode wird statt der Endlosschleife ein Interrupt gesetzt und eine Funktion zur Behandlung eines Ereignisses verwendet. Diese Lösung macht die Auswertung des KY-010 vom weiteren Hauptprogramm unabhängig.
Das Programm liefert auf der Kommandozeile „True“ für eine Unterbrechung und „False“, wenn die Sichtverbindung wieder hergestellt ist. Parallel dazu leuchtet die Onboard-LED und geht wieder aus.
# Bibliotheken laden
from machine import Pin
# Initialisierung der Onboard-LED
led_onboard = Pin(25, Pin.OUT, value=0)
# Initialisierung von GPIO16 als Eingang
sensor_d = Pin(16, Pin.IN)
# Funktion: Interrupt-Behandlung
def sensor_irq(pin):
value_d = not led_onboard.value()
print(value_d)
led_onboard.value(value_d)
# Interrupt-Steuerung
sensor_d.irq(trigger=Pin.IRQ_FALLING|Pin.IRQ_RISING, handler=sensor_irq)
Darf es ein bisschen mehr sein?
Der nächste logische Schritt beim Experimentieren ist, einen Zähler zu bauen, der die Unterbrechungen zählt und den Zählerstand ausgibt.
Weitere verwandte Themen:
- Raspberry Pi Pico: Lichtschranke mit LED und LDR (mit KY-018)
- Raspberry Pi Pico: Unterbrechungszähler mit Lichtschranke KY-010
- Raspberry Pi Pico: Alarmkontakt (Alarmanlage)
- Raspberry Pi Pico: Alarm mit Summer signalisieren
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.




