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.
- Zwei beliebige LEDs werden über einem eigenen GPIO unabhängig voneinander angesteuert.
- Bei der zweiten Lösung nehmen wir den Programmcode des Lauflichts und tragen dort nur zwei LEDs ein.
- 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
- 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
- Verbinde die Anode (langer Anschluss) der Leuchtdioden mit den GPIO-Pins.
- Verbinde die Kathode (kurzer Anschluss) der Leuchtdioden mit je einem Widerstand.
- 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
- R1: Widerstand, 470 Ohm (Gelb-Violett-Schwarz-Schwarz)
- LED1: Leuchtdiode, rot, gelb oder grün
- LED2: Leuchtdiode, rot, gelb oder grün
- Verbinde die andere Seite des Widerstands mit dem GND-Pin.
- Verbinde eine LED mit dem Widerstand gegen GND.
- 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.
- Raspberry Pi Pico: Binärer Zähler mit LEDs programmieren
- Raspberry Pi Pico: Zufallszahl generieren
- Raspberry Pi Pico: Elektronischer Würfel
Highlights: Elektronik mit dem Raspberry Pi Pico
- Raspberry Pi Pico: Onboard-LED einschalten und ausschalten
- Raspberry Pi Pico: Taster-Zustand auswerten und mit einer LED anzeigen
- Raspberry Pi Pico: Elektronischer Würfel
- Raspberry Pi Pico: Temperatur-Messung und Temperatur anzeigen
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:
- Raspberry Pi Pico
- Raspberry Pi Pico: GPIO-Grundlagen
- Raspberry Pi Pico: GPIO-Eingang beschalten
- Raspberry Pi Pico: GPIO-Ausgang beschalten
- Elektronik mit dem Raspberry Pi Pico
Teilen:
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
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
Online-Workshop: 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.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)