Raspberry Pi Pico: LED-Wechselblinker programmieren

Wenn Du bereits eine LED zum Blinken gebracht hast, dann ist der nächste Schritt, zwei LEDs abwechselnd Blinken zu lassen, nicht viel schwerer zu realisieren.
Funktional muss die eine LED aus sein, wenn die andere leuchtet. Dann wird die eine LED eingeschaltet und die andere ausgeschaltet.

Aber für einen LED-Wechselblinker gibt es tatsächlich mehrere Lösungen.

  1. Zwei beliebige LEDs werden über einem eigenen GPIO unabhängig voneinander angesteuert.
  2. Bei der zweiten Lösung nehmen wir den Programmcode des Lauflichts und tragen dort nur zwei LEDs ein.
  3. Die dritte Lösung macht sich den Umstand zu Nutze, dass man LEDs gegen Ground (GND) oder gegen +VCC schalten kann. Dann reicht ein GPIO zur Ansteuerung von zwei LEDs aus.

Es geht darum, alle Lösungen auszuprobieren. Auf diese Weise sollst Du ein Gefühl dafür bekommen, welche Lösung am ehesten praktikabel ist.

Aufbau und Bauteile für Lösung 1, 2 und 3

Raspberry Pi Pico: LED-Wechselblinker programmieren

  • R1: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
  • R2: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
  • LED1: Leuchtdiode, rot, gelb oder grün
  • LED2: Leuchtdiode, rot, gelb oder grün
  1. Verbinde die Anode (langer Anschluss) der Leuchtdioden mit den GPIO-Pins.
  2. Verbinde die Kathode (kurzer Anschluss) der Leuchtdioden mit je einem Widerstand.
  3. Verbinde die andere Seite des Widerstands mit dem GND-Pin.

Schnell und einfach alle Bauteile zusammen bestellen

Aufbau und Bauteile für Lösung 4

Raspberry Pi Pico: LED-Wechselblinker programmieren

  • R1: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
  • LED1: Leuchtdiode, rot, gelb oder grün
  • LED2: Leuchtdiode, rot, gelb oder grün
  1. Verbinde die andere Seite des Widerstands mit dem GND-Pin.
  2. Verbinde eine LED mit dem Widerstand gegen GND.
  3. Verbinde die andere LED mit dem Widerstand gegen VCC.

Lösung 1: Einzelne LED-Steuerung

Die naheliegendste Lösung ist, zwei beliebige LEDs über einen eigenen GPIO unabhängig voneinander angesteuert. Also abwechselnd ein- und auszuschalten.

# Bibliotheken laden
from machine import Pin
from time import sleep

# Initialisierung von GPIO13 als Ausgang
led1 = Pin(13, Pin.OUT)
led2 = Pin(14, Pin.OUT)

# Wiederholung einleiten (Schleife)
while True:
    # LEDs: EIN/AUS
    led1.on()
    led2.off()
    # 1 Sekunde warten
    sleep(1)
    # LED: AUS/EIN
    led1.off()
    led2.on()
    # 1 Sekunde warten
    sleep(1)

Lösung 2: Lauflicht mit 2 LEDs

Eine andere Lösung sieht so aus, dass wir den Programmcode eines Lauflichts nehmen und nur zwei GPIOs daraus ansteuern.

# Bibliotheken laden
from machine import Pin
from time import sleep

# GPIOs für das Flip-Flop auswählen
GPIO = [13, 14]
leds = len(GPIO)
led = [0] * leds

# Initialisierung der GPIOs
for i in range(leds):
    led[i] = Pin(GPIO[i], Pin.OUT)

# Wiederholung einleiten (Schleife)
while True:
    for i in range(leds):
        led[i].on()
        sleep(0.5)
        led[i].off()

Lösung 3: Einzelne LED-Steuerung mit Timer-Lösung

Schleifen haben den Nachteil, dass andere Programmteile nur schwer integriert werden können und diese Programmteile nicht unabhängig funktionieren. Diese Wechselblinker-Lösung überträgt die Funktion des Blinkens an einen Timer, der unabhängig vom restlichen Programmcode funktioniert.

# Bibliotheken laden
from machine import Pin, Timer

# Initialisierung der GPIOs als Ausgang
led1 = Pin(13, Pin.OUT, value=0)
led2 = Pin(14, Pin.OUT, value=1)

# Definition einer Funktion, die der Timer aufruft
def toggle(timer):
    led1.toggle()
    led2.toggle()

# Timer initialisieren
Timer().init(freq=2, callback=toggle)

4. Programmcode: Zwei LEDs an einem GPIO mit Timer-Lösung

Eine weitere Lösung sieht so aus, dass wir den Programmcode des Blinklichts verwenden, womit aber nur eine Leuchtdiode, respektive GPIO, angesteuert wird. Das Wechselblinker-Prinzip wird durch die Schaltung mit den Leuchtdioden realisiert.

# Bibliotheken laden
from machine import Pin, Timer
from time import sleep

# Initialisierung von GPIO13 als Ausgang
led = Pin(13, Pin.OUT)

# Timer erstellen
tim = Timer()

# Definition einer Funktion, die der Timer aufruft
def blink(timer):
    global led
    led.toggle()

# Timer initialisieren
tim.init(freq=2.5, mode=Timer.PERIODIC, callback=blink)

# 5 Sekunden warten
sleep(10)

# Timer beenden
tim.deinit()

Welches ist die bessere Lösung?

Die richtige Lösung gibt es nicht. Die cleverste Lösung ist Nummer 4. Allerdings ist es die weniger flexible Lösung. Sie eignet sich nur als Wechselblinker, weil die Funktion zum Teil in der Schaltung, also der Hardware steckt. Die Hardware begrenzt in diesem Fall die Funktion.
Die erste und zweite Lösung sind zumindest in der Theorie besser, verbrauchen aber mehr Ressourcen, was Anzahl der GPIOs und die Rechenleistung betrifft.
Die Lösung Nummer 3 wird man in der Praxis bevorzugen, weil diese Timer-Lösung über eine eigene Funktion unabhängig vom restlichen Programmcode funktioniert und nur hinzugefügt werden muss.

Darf es etwas mehr sein?

Lauflichter und Wechselblinker, das ist ganz nett und auch nicht schwer. Lass uns doch mal spannendere Dinge ausprobieren. Zum Beispiel einen Zähler, oder vielleicht etwas, bei dem etwas zufällig passiert.

Highlights: Elektronik mit dem Raspberry Pi Pico

Elektronik mit dem Raspberry Pi

Die Stärken des Raspberry Pi liegen klar in der Computer-Architektur mit typischen Computer-Schnittstellen und Möglichkeit zum Ausführen von Open-Source-Software für Linux.

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