Raspberry Pi – DIY Adventkranz Teil 2

Im letzten Teil habe ich gezeigt wie man die Hardware für den DIY Adventkranz erstellt. Dabei werden 4 LEDs benutzt die als „Kerzen“ des Adventkranzes dienen. Über Steckdrähte sind diese am Pibrella Board oder alternativ direkt an den GPIO Pins angeschlossen. Alles sollte nun soweit funktionell sein, was jetzt noch fehlt ist die Software, das Python Script welches diese LEDs steuert.

adventkranz-software

Software

Wie im letzten Teil möchte ich den Source Code auch wieder in zwei alternativen Versionen anbieten. Die Ansteuerung der 4 Ausgabe-Pins der Pibrella Boards funktioniert mit einer eigenen Python Pibrella Bibliothek. Alternativ zeige ich dazu wie man das ohne diesem Board mit den „normalen“ GPIO Boards eines Raspberry Pis steuert und zwar so, dass der Source Code sowohl auf der den alten Raspberry Pi Versionen als auch auf den neuen Plus Modellen funktioniert.

Pibrella Variante

Das Script beginnt mit den Import der benötigten Bibliotheken. Wie bereits erwähnt verwenden wir die Pibrella eigene Bibliothek. Wie man diese installiert zeige ich in einem separaten Artikel. Zusätzlich benötigen wir für die Berechnung mit Daten die datetime Bibliothek. Diese werden wie folgt in Python importiert:

Im nächsten Block werden einige Daten initialisiert. Wir holen uns das aktuelle Datum und berechnen uns das jeweilige Datum der 4 Adventsonntage. Das geht wie folgt:

Man beachte, dass die Daten der Adventsonntage vom 24.12. des aktuellen Jahres zurückgerechnet werden. Dadurch ist dieses Script dynamisch jedes Jahr wieder zu verwenden. Der eigentlich interessante Codeteil ist die If-Abfrage in der basierend auf der Datumsinformation die einzelnen LEDs aktiviert werden.

Mit dem letzten Kommando bleibt das Skript am Leben. Das heißt, die LEDs leuchten so lange, bis man das Script durch einen Tastendruck beendet. Danach werden die Pibrella Board Pins wieder auf den Ursprungszustand zurückgesetzt.

Der Source Code für die Pibrella Variante kann hier heruntergeladen werden.

Standard GPIO Variante

Die Standard GPIO Variante unterscheidet sich von der Pibrella Variante nur wenig. Tatsächlich sind nur jene Codestellen anders, die sich auf die Kommunikation mit der GPIO Schnittstelle beziehen. Im Importbereich wird statt der Pibrella Bibliothek jene der GPIO Schnittstellen eingebunden. Das geht folgendermaßen:

In weiterer Folge muss man die GPIO Schnittstelle initialisieren. Das geht mit einem einzigen Codezeile. Zusätzlich lege ich im Codebereich für die Initialisierung auch Variablen für die GPIO Pin Nummerierung an, damit ich im Fall des Falles die verwendeten Pins problemlos austauschen kann:

Die zweite Codeänderung bezieht sich auf die If-Abfrage. Dort wird auf andere Art und Weise mit den Pins kommuniziert als im Pibrella Beispiel:

GPIO.cleanup() Die einzelnen Pins muss man jeweils initialisieren. Man kann diese als GPIO.IN oder GPIO.OUT definieren. Da wir sie als Ausgabe-Pins nutzen setzen wir jeweils GPIO.OUT. Erst nach dem Setup kann auf die Pins geschrieben werden.

Man beachte hier auch die letzte Zeile. Anders als beim Pibrella Skript müssen wir die GPIO Schnittstelle manuell aufräumen. Ohne dem cleanup Kommando würden die LEDs weiter leuchten.

Der Source Code für die Standard GPIO Variante kann hier heruntergeladen werden.

Fazit

Mit meinem Adventkranz Beispiel habe ich euch alles nötige gezeigt wie ihr selber mit dem Pibrella Board oder direkt über die GPIO Pins LEDs ansteuern könnt. Im Hardware Teil des Artikels ebenso erklärt wie man LEDs, Steckdrähte und Widerstände mit einem Steckbrett verwenden könnt. Im Software Teil des Artikels gezeigt wie man diese Pins mit Python ansteuern und aktivieren beziehungsweise deaktivieren könnt.

Wie gefällt euch der Artikel? Habe ihr eventuell Ideen wie man den Adventkranz noch verbessern könnte?

Teil 1 | Teil 2

(Visited 414 times, 1 visits today)

Das könnte auch interessant sein...

1 Antwort

  1. Hi, super Artikel.

    Aber du solltest folgende zwei Programmzeilen ergänzen:

    a = raw_input(„Programm wir mit Tastendruck beendet“)

    Sollte wohl heißen:
    a = raw_input(„Programm wird mit Tastendruck beendet“)

    Ebenso: input(„Programm wir mit Tastendruck beendet“)

    Ich habe das Gefühl ich bin immer der Jäger der Kleinigkeiten in deinem Blog 😉

    Gruß,
    BBC (Chris)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.