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: Unterbrechungserkennung mit Lichtschranke KY-010

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:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren