In diesem Abschnitt werden wir uns mit dem Sense-HAT (Hardware attached on top) beschäftigen. Einer Zusatzplatine, die eine 8x8 LED-Anzeige besitzt und dazu noch sechs Sensoren:
Bevor man sich ein solches Teil im Internet bestellt, kann man mit einem Simulationsprogramm die Möglichkeiten dieses Boards antesten.
Sense-HAT Simulation unter Windows
Über die URL https://trinket.io/sense-hat gelangt man direkt auf die Seite des Sense-HAT Simulationsprogramms der Fa. trinket. Es wird sowohl der Python-Code zur Ansteuerung der einzelnen Sensoren gezeigt, als auch das Ergebnis auf dem Sense-HAT, sofern man die Messwerte über die 8x8 LED-Anzeige ausgibt.
Sense-HAT Simulation unter Linux
muss anschließend der Sense HAT Emulator separat installiert werden. Dies erfolgt über
Nach dem Start des Programms meldet sich der Sense HAT Emulator Bildschirm.
Unter File - Open example können aus drei Untermenüs:
verschiedene Programme ausgewählt und getestet werden. Da der Quellcode zu jedem der angebotenen Beispielprogramme mitgeliefert wird, erhält man einen ersten Eindruck von der Mächtigkeit der hinterlegten Bibliotheksfunktionen.
Zuerst muss das Sense HAT mit der GPIO-Leiste des Raspi3 verbunden und anschließend verschraubt werden. Ist das erfolgt, muss - bei älteren Linux-Versionen - die Sense HAT Bibliotheksdatei geladen werden. Das geschieht mit
Wer mit dem aktuellen Betriebssystem arbeitet (Stand: 2018), braucht diese Schritte nicht auszuführen; da sind die Bibliotheksdateien bereits integriert.
Temperatur messen mit dem Sense HAT | |
Material |
|
Aufgaben |
|
Das Programm senseHat_temp1.py
Terminalausgabe der Ergebnisse
Betrachtung der Ergebnisse
Den Datenblättern ist zu entnehmen, dass jeder der drei installierten Sensoren auch einen Temperatursensor enthält. Aber ... die gemessenen Temperaturen entsprechen nicht der Zimmertemperatur.
Grund: durch die "geschickte" Anbringung der drei Sensoren (Druck, Feuchtigkeit und IMU) liegen diese, wenn die Platine auf den Raspi gesteckt ist, direkt über den Kühlrippen des "dampfenden" Controllers auf der Raspi-Platine. Temperaturen um die 40° C sind dann zu erwarten. Raumtemperaturen lassen sich so leider nicht messen. Will man sie dennoch messen, muss ein externer Temperatursensor an einem der freien GPIOS betrieben werden. Wie das geht, wird später gezeigt oder - man trennt das Sense-HAT vom Raspi.
Da warme Luft bekanntlich aufsteigt, kann man, wenn der Raspi um 90° gedreht wird, erreichen, dass die aufsteigende warme Luft durch den schmalen Schlitz zwischen Raspi-Platine und HAT schneller nach oben entweichen kann. Die Folge: die angezeigte Temperatur geht zügig zurück (s. Abb. 1). Dieser Effekt kann mit Hilfe eines kleinen Lüfters noch deutlicher erreicht werden.
Auf dem 8x8 LED-Graphik-Feld lassen sich mit relativ einfachen Mitteln kleine Grafiken in RGB-Farben darstellen. Dazu werden in einem ersten Schritt die für das Bild benötigten RGB-Farben definiert und anschließend in einem 64-Punkt-Array gesetzt. Die Funktion
bringt das Bildchen dann auf das LED-Array des Sense-HAT. Die Variable name ist in diesem Fall der Arrayname des 64-Punkt-Arrays.
Eine einfache LED-Grafik erzeugen | |
Material |
|
Aufgaben |
|
Das Programm SenseHat_grafik01.py
Nachdem gezeigt wurde, wie man ein Bild auf dem 8x8 LED-Display des Sense-HAT erzeugen kann, werden in der folgenden Übung vier verschiedene einfarbige Bilder mit Hilfe des Joysticks auf dem Sense-HAT abgerufen.
Das Material für diese Übung entspricht dem aus den beiden vorherigen Übungen. Es werden fünf verschiedenfarbige Bilder von jeweils einer bestimmten Farbe deklariert: rot, grün, blau, gelb und braun. Die einfarbigen Bilder werden zunächst im Sekundentakt auf dem LED-Display dargestellt. Anschließend wird über den Joystick mit jedem Tastendruck nacheinander eines der fünf Bilder aufgerufen. Wer es sich zutraut, kann auch das Vorwärts- bzw. Rückwärtsblättern durch die fünf Bilder programmieren.
Bildfolge mit einem Joystick steuern | |
Aufgaben |
|
Das Programm SenseHat_grafik02.py
Die fünf Bildarrays (hier ist nur eins dargestellt) sind genau so aufgebaut wie Feld_1, nur die Farbe ist jedes mal geändert. Da der Joystick des SenseHat angesprochen werden soll, wird die Bibliotheksfunktion pygame und alle Funktionen aus pygame.locals importiert.
Die Bilddarstellung auf dem 8x8 LED-Array wird abgeschlossen mit der Funktion
die alle LEDs ausschaltet.
Das Konsolenfenster unter pygame wird nicht benötigt, wir arbeiten nur mit der 8x8 LED-Matrix, deshalb: bei pygame.display.set_mode kleine Abmessungen wählen. Mit der boolschen Variablen aktion wird eine Endlosschleife aufgebaut in der abgefragt wird, ob der Joystick gedrückt wird (KEYDOWN). Wenn JA, wird ein neues Bild auf der LED-Matrix angezeigt.
In dem folgenden Quellcode lassen sich die einzelnen Bilder mit Hilfe des Joysticks vorwärts und rückwärts durchlaufen. Als sechstes Bild wurde ein "schwarzes" Bild hinzugefügt, bei dem alle LEDs der Matrix ausgeschaltet sind.
Das Programm SenseHat_grafik03.py
Mit der pygame-Bibliothek und dem Sense-HAT lassen sich relativ einfach grafische Spiele auf dem 8x8 LED-Display programmieren. Einführende Tutorials zum Gebrauch der Funktionen aus der pygame-Bibliothek findet man im Internet; einfach nur googeln.
Für den unterrichtlichen Einsatz oder in AGs scheint mir dieses Teil nützlich zu sein; angesprochen sind eher SuS der Mittel- bis Oberstufe.
Über verschiedene Beschleunigungssensoren findet man an den folgenden Stellen ebenfalls Informationen:
Mit Hilfe der Methode
lässt sich mit dem Sense-HAT die Kraft auf die drei Raumachsen x, y und z des Sensors in Vielfachen von g bestimmen. Da der Sensor flach auf der Sense-HAT-Platine aufgelötet ist, wirkt nur auf die Achse, die zum Erdmittelpunkt zeigt, die Gravitationskraft mit + oder - 1g. Das Vorzeichen ergibt sich durch die Lage des Sensors zum Erdmittelpunkt. Insgesamt kann die Platine bzw. der Sensor auf der Platine sechs verschiedene Achslagen zum Erdmittelpunkt einnehmen.
Messung der Beschleunigung | |
Material |
|
Aufgaben |
|
Das Programm SenseHAT_beschleunigung1.py
Terminalausgabe
Würdigung der Messergebnisse
Zwischen den einzelnen Messungen bleiben 10s, um den Controller in die neue Position zu bringen. Bei der ersten Messung lag der Controller flach auf dem Tisch, bei der zweiten wurde er um 180° gedreht (auf den Kopf gestellt). Das Vorzeichen der Erdbeschleunigung g wechselt bei der z-Achsrichtung von Plus zu Minus, die anderen Achsrichtungen weisen den korrekten Wert 0 aus.
Bei der dritten und vierten Messung wurde die Platine so gehalten, dass man auf die vier um 90° gedrehten USB-Anschlüsse schaut (y-Achsrichtung des Sensors) und bei den letzten beiden Messungen zeigen die USB-Anschlüsse nach oben bzw. unten (x-Achsrichtung des Sensors).
Jeder kennt von seinem Handy oder Tablet, dass sich der Text auf dem Display immer so ausrichtet, dass er vom Betrachter gelesen werden kann, egal, wie das Display gehalten wird. Diesen Effekt werden wir auf dem 8x8 LED Display in der folgenden Übung umsetzen. Die Materialliste entspricht der aus Übung 4.
Text automatisch ausrichten | |
Aufgaben |
|
Das Programm SenseHAT_beschleunigung2.py
Im Terminalfenster werden zur Kontrolle die Messwerte bezüglich der drei Raumachsen ausgegeben.