Lichtorgel
Setup
Nun zum ersten Tutorial mit dem Gertboard. Deine Aufgabe ist es nun die eingebaute LED-Reihe in eine Lichtorgel zu verwandeln. Da bei der Lichtorgel alle LEDs angesteuert werden sollen und diese eine Ausgabe des Pi bzw. des Gertbords ist, müssen alle Buffer auf dem Gertboard ebenfalls als output gesetzt sein. Dies betrifft als output Buffer B1 – B12 (siehe Gertboardgrafik).
Habt ihr die Buffer richtig definiert, kann erstmal gar nichts passieren. Es
gibt keine leitende Verbindung zwischen dem funktionellem Block der Buffer und
dem Pi. Diese Verbindung muss nun geschaffen werden. Hierzu müssen die GP Pins
mit den Buffer Pins verbunden werden.
Um die LED wie gewünscht ansteuern zu können sind die GP25–GP17 mit den Buffern
B1-B7 zu verbinden und GP11-GP7 mit B8-B12. GP15 und GP 14 werden ausgelassen,
da diese eine andere Funktion abdecken, die zu diesem Zeitpunkt nicht benötigt
wird. Nach dem verkabeln des Gertboards sollte dieses aussehen wie auf der
Grafik und den Bildern unten auf der Seite.
Das Programm
Nun haben wir bereits die “Hardware”-Vorraussetzungen für unsere Lichtorgel geschaffen. Wichtig ist, dass ihr die GPIO-Steuerung in euer Programm einbindet:
#include <gpio.h>
Kommen wir nun zum Code, der die Lichtorgel antreibt. Wichtig ist, dass die API, also die Schnittstelle eingebunden ist, die den Zugriff auf die GPIO Pins ermöglicht. Diese hält Methoden bereit, die ihr nun nutzen könnt um die LEDs auf dem Board an und aus zu schalten.
Euer Programm soll die LEDs auf dem Gerdboard der Reihe nach aufleuchten lassen. Nachdem eine Richtung komplett durchlaufen wurde, soll dies erneut in die andere Richtung geschehen. So entsteht eine nicht aufhörende Kette von aufleutenden Lampen.
Tipps
- Zuerst muss eine Liste von GPIO Pins erstellt werden. Diese sollte alle Pins enthalten die in Verbindung mit den LEDs stehen und diese als
output_pin
deklarieren. - Um das aufleuchten der Lampen zu einer Lichtorgel zu verbinden benötigt ihr 3 Schleifen. Davon dient zwei nur zum Aufleuchten einer Reihe in jeweils verschiedene Richtungen. Die dritte dient dazu, dass dieser Vorgang wieder von vorne beginnt.
- Funktionen die genutzt werden sollten sind:
vector::begin()
,vector::end()
,pin::state()
,delay()
. - Mit der Funktion
state()
kann sowohl ein Wert abgefragt, mit derset_state(bool)
übergegen werden.