Alles Wichtige spielt sich also in diesem Abschnitt ab. Bei der Methode slp() handelt es sich um einen Wrapper für die Java-Methode Thread.sleep(), der das lästige Try/Catch versteckt. Am Ende der Methode handleGpioPinDigitalStateChangeEvent() erkennen Sie noch einen Aufruf von slp(). Er verhindert, dass das Gespenst in einer Tour spukt. Die vorgegebene Zeitspanne passen Sie ganz nach Bedarf an.
Die Methode main() enthält nur Schritte zum Initialisieren der Hardware. Listing 8 zeigt einen weiteren wichtigen Abschnitt des Codes: die Methode copyBufferToLed(). Sie überträgt den lokalen Puffer, der sich in der Variablen buffer[][] befindet, über die SPI-Schnittstelle in die LED-Module. Alle für die Animationen zuständigen Methoden, wie etwa eyeClose(), arbeiten zunächst nur auf dem lokalen Puffer.
Listing 8
public static void copyBufferToLed(){
byte packet[] = new byte[MODULES*2];
for (int row = 0; row <= 7; row++) {
for (int col = 0; col < MODULES; col++) {
packet[0+(2*col)] = (byte)(row+1);
packet[1+(2*col)] = (byte) buffer[col][row];
Spi.wiringPiSPIDataRW(0, packet, MODULES * 2);
}
}
}
Die Servomotoren steuern Sie mit den Softpwm-Methoden der Pi4j-Bibliothek an, was überraschend gut klappt. Sollten Sie in einem Projekt jedoch eine etwas genauere Steuerung von Servos benötigen, lohnt es sich, auf das Projekt Servoblaster zurückzugreifen.
Zu guter Letzt gibt es noch eine Reihe von Methoden, die für das Initialisieren der SPI-Geräte zuständig sind. Um diese zu verstehen, sollten Sie das Datenblatt des MAX7219 [8] genau studieren. Anschließend übertragen Sie das Programm auf den RasPi, beispielsweise via SFTP. Auf dem Raspberry Pi kompilieren und starten Sie das Programm dann (Listing 9). Jetzt steht dem Halloween-Spuk nichts mehr im Weg: Sobald sich jemand in die Nähe des “Gespenstes” begibt, geht es los.
Listing 9
$ pi4j -c gost.java + javac -classpath '.:classes:*:classes:/opt/pi4j/lib/*' -d . gost.java $ pi4j -r gost + sudo java -classpath '.:classes:*:classes:/opt/pi4j/lib/*' gost
Fazit
Dieses Projekt zeigt wieder einmal, wozu der kleine Raspberry Pi fähig ist. Das Programm beweist, dass die Pi4j-Bibliothek es ermöglicht, sehr elegant auf Hardware zuzugreifen. Dabei dient die vorgestellte Spuk-Software nur als Beispiel, wie sich ein solches Gespenst konstruieren ließe, und lässt sich nach Belieben anpassen und weiter ausbauen. So könnte der Geist etwa grimmiger heulen oder mehr Möglichkeiten bieten, um mit seiner Umgebung zu interagieren. Relativ unwahrscheinlich ist aber, dass er selbst die Tür aufmacht und Süßigkeiten verteilt. Dennoch werden die kleinen Besucher sicher viel Spaß mit dem Halloween-RasPi haben.
Infos
- LED-Modul: http://www.ebay.de/itm/5Pcs-MAX7219-Dot-Matrix-8×8-LED-Module-Display-Arduino-Afficheur-Matrice-TE159-/261865953695?hash=item3cf86d599f
- Buchsenleiste: https://www.ex-store.de/Verbindungen/Buchsenleiste-40-pol-rm-2-54::80.html?MODsid=masaatgviq4ivu5qdqpr7t0rh7
- DC-DC-Wandler: https://www.ex-store.de/Spannung/LM2596S-Regelbares-Step-down-Modul-mit-Filter::195.html?MODsid=masaatgviq4ivu5qdqpr7t0rh7
- PIR-Sensor: https://www.ex-store.de/Sensoren/Bewegung/PIR-Motion-Detection-Infrarot-Sensor-HC-SR501::145.html?MODsid=masaatgviq4ivu5qdqpr7t0rh7
- WiringPi: https://drojects.drogon.net
- Oracle Java: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-arm-downloads-2187472.html
- WinSCP: https://winscp.net/eng/download.php
- Datenblatt MAX7219: http://pdf1.alldatasheet.com/datasheet-pdf/view/73745/MAXIM/MAX7219.html


