Calliope mini - Spaß durch Programmieren

Entwicklungsumgebungen

Regentropfenspiel mit Tastenfeld und Neopixel-Matrix

Ziel: Das Regentropfenspiel mit den Tasten A und B und der 5x5-Matix auf dem Calliope lässt keine Freude aufkommen. Alles ist zu winzig!
Die Eingabe soll jetzt über ein Tastenfeld und die Ausgabe über eine 8x8-Neopixel-Matrix erfolgen.
Bauanleitung

Tastenfeld abfragen

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.

Calliope mini

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 jezzt 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

 

Calliope mini

Die Tasten A und B erstetzen

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.

Calliope mini

Vorbereitung für den großen Bildschirm

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 die 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.

Calliope mini
Calliope mini

Großen Bildschirm einbinden

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.

Calliope mini

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!

Calliope mini

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.

Calliope mini

Fast fertig...

Das Programm läuft, die Tropfen fallen, der Eimer kann bewegt werden. Zur Verbesserung kann man noch

  • die Tropfen immer schneller fallen lassen. Dazu ist die Wartezeit nach jedem gefangenen Tropfen zu verkleinern.
  • die Farbe der Tropfen ändern. Dazu ist für die Farbe eine neue Variable einzufügen, die im HSL-Modell den Farbwinkel ändert.
  • die Anzahl der gefangenen oder nicht gefangenen Tropfen zählen und das Spiel irgenwann abbrechen.

zurück