Es kommt ein Tastenfeld zum Einsatz, welches man im Versandhandel unter "Taster-Modul Arduino 5 Tasten" für wenige Euros erwerben kann.
Das Feld hat 3 Anschlüsse: GND für Minuspol, VCC für Pluspol und OUT für die Ausgangsspannung. Auf dem Modul befinden sich 5 Taster und Widerstände. Diese Bauteile sind so verschaltet, dass bei jeder gedrückten Taste am OUT-Anschluss eine bestimmte Spannung zuwischen 0 V und VCC anliegt. Ist VCC also 3,3 V, liegen am Ausgang entsprechend dem Tastendruck Spannungen zwischen 0V und 3,3 V an.
Diese Ausgansspannung wird zum Pin 1 geführt, der als analoger Eingang arbeitet. Im Calliope mini wird die Spannung über einen 10-Bit Analog-Digital-Wandler in einen Wert zwischen 0 und 1023 umgewandelt, der dann weiter verarbeitet werden kann.
Mit einer einfachen Programmzeile lässt sich der Wert am Pin 1 anzeigen. Im konkreten Fall wird 1017 angezeigt. Das entspricht dem Zustand "kein Schalter gedrückt".
Man sollte sich jetzt die Werte für jeden Schalter aufschreiben! Jedes Tastenfeld liefert leicht andere Werte. Das hängt mit der Fertigungstoleranz der Widerstände zusammen.
Taste | Wert |
---|---|
keine | 1017 |
SW1 | 1 |
SW2 | 146 |
SW3 | 332 |
SW4 | 506 |
SW5 | 739 |
Als nächstes werden die beiden Abfragen von A und B in der dauerhaft-Schleife ersetzt. Zu Beginn der Schleife wird in der Variable pin_1 der aktuelle Wert, den das Tastenfeld liefert, gespeichert.
Dann wird entsprechend dem Wert von pin_1 die jeweilige Aktion ausgeführt. Damit jeder Tastendruck den Eimer nur ein Feld weiterrückt, muss die Tasteneingabe sofort nach dem Drücken einer Taste gesperrt werden. Das erfolgt über die Variable taste, die vom Typ Boolean ist.
Wenn der Wert, den das Tastenfeld liefert, größer als 1000 ist, also keine Taste gedrückt ist, wird die Variable wieder auf falsch gesetzt.
Im Bild sieht man den Anfang der Entscheidungen.
Das Programm wird nun für einen großen Bildschirm vorbereitet. Dazu soll in einer weiteren Variablen mit Namen breite im Startblock vorgegeben werden, welche Nummer die letze Spalte der Matrix hat.
Im gesamten Programm werden alle Zahlenwerte, die die Spalten- oder Zeilenzahl 4 enthalten, durch die Variable breite ersetzt. Als Test biedet es sich an, die Breite auf 3 zu setzen. Das Spielfeld sollte dann auf 3x3 LEDs eingeschränkt werden.
In Versandhandel erhält man für unter 10 Euro eine 8x8 RGB-LED-Matrix (Suchwort CJMCU-8x8 Modul). Die gesamte Matrix lässt sich über einen einzigen Pin komplett ansteuern. Dazu muss die Erweiterung für AdaFruit Neopixel geladen werden.
Der Dateineingang der Matrix wird am Pin 0 angeschlossen. Die Spannung für die Matrix kann direkt an den Pins + und - abgegriffen werden.
Der Startblock wird leicht abgeändert und sieht jetzt wie im Bild dargestellt aus.
WICHTIG: Änderungen am Aussehen der Neopixel-Matix werden erst dann sichtbar, wenn der Befehl ausgeführt wurde!
Im Programm werden nun alle Befehle für den kleinen Bildschirm durch den entsprechenden Befehl für den großen Bildschirm ersetzt. Da nun viele Farben zur Verfügung stehen, können die Tropfen in Blau und der Eimer z.B. in Grün gefärbt werden.
Das Programm läuft, die Tropfen fallen, der Eimer kann bewegt werden. Zur Verbesserung kann man noch
Das Programm ist fertig: Die Tropfen werden immer schneller und ändern ihre Farbe, je schneller sie werden (von Blau zu Rot). Die Eimerfarbe zeigt an, ob ein Tropfen gefangen wurde. Auf dem 5x5-Bildschirm wird durch einen CountDown die verbleibenden Spielzeit angezeigt. Mit der Taste A kann das Spiel neu gestartet werden und mit der Taste B werden die in der Spielzeit gefangenen Tropfen angezeigt.
Spaßfaktor: sehr groß. Suchtgefahr: hoch.
Das Spiel kann fertig heruntergeladen werden.