„Irgendwas mit IoT“: Billardtisch-Spieleranzeige

5 Feb

Langer Sonntag und mühseliges Copypaste-Lernen im Arduino-Editor (ich vermisse in diesen Momenten immer die Leistungsfähigkeit von NetBeans, was Code-Vervollständigung und allgemeine Hurtigkeit angeht ...), aber – Tadaa!

Eine elektronische Anzeigetafel für einen Billard-Tisch.

Nach dem Einschalten verbindet sich der (oben im Bild unter Draht begrabene) ESP8266 mit einem von mehreren festgelegten WLANs, und zeigt auf dem Display seine IP-Adresse mit dem Hinweis "Spielernamen auf Server eingeben" an.

Dort findet man eine Eingabemaske mit 4 Textfeldern und 4 Checkboxen. Namen mit gesetzter Checkbox werden bei der Berechnung wer in welcher Runde dran ist mit berücksichtigt. Namen ohne sind einfach nur verstellbare Zähler.

Der schwarze Klotz im Display zeigt jeweils welcher Spieler Anstoß hat (basierend auf den Checkboxen und der bisher aufgelaufenen Spiele-Punktezahl).

Der Pfeil ist ein mit einem Drehknopf verstellbarer Cursor. Zeigt er nach links, bewegt man durch Drehen den Cursor. Zeigt er nach rechts (umschaltbar durch Druck auf den Knopf) ändert man die Punktzahl neben dem Pfeil.

Auf der Server-Seite gibt es auch noch "Zähler zurücksetzen". Außerdem versteht die Software zumindest auch die deutschen Umlaute und übersetzt sie vor der Ausgabe auf das Display von UTF-8 in den exotischen HD44780 Displaycode.

Gelernt dabei:

  • Zum ersten Mal Interrupt-Code verwendet
  • Strings, Chars, Bytes und Pointer (zumindest grob damit angefangen)
  • Include-Dateien nutzen
  • Es gibt jeeeeede Menge Bibliotheken zum Ansteuern von HD44780 Displays. Und keine echte Empfehlung … aber in diesem Fall hat die LiquidCrystal_PCF8574 richtig gut funktioniert
  • Pulldown-Widerstände und Drehschalter sind eigentümlich. Besser Pullup verwenden und dafür die Interrupts (bei diesem Schaltermodell zumindest) über Modus FALLING auslösen.
  • Interrupts und Kontaktprellen … eine ganz eigene Welt.
  • Lieber das Breadboard für den ersten Test eine Nummer größer wählen. Ansonsten kann es sein, dass man sich einen vertitablen Kabelpuschel um den einzigen Drehschalter stöpselt …

Mysteriös:

  • Warum beißt sich I2C mit den Ports D7 / D8 so bitterlich dass der Chip in Endlosschleife zu resetten beginnt? Spontan keine Erklärung gefunden, höchstens dass im Schaltplan die auch mit Seriell belegt sind.
  • Beim LoLin-Modell der NodeMCU ist die blaue Lampe am D4 verbunden. Unerwartet.

Was noch fehlt:

  • Sauberes De-Bounce der Kontakte vom Drehschalter. Je nach Drehgeschwindigkeit kann der Zähler dort schon mal rückwärts laufen oder um mehr als +/-1 springen. Aber dazu muss ich erst noch auf meine bestellten CD4093 CMOS-Chips warten.
  • Einbau in den Tisch. Insbesondere die Frage: Wie kriegen wir einen edle Frontblende über die vorhandenen Einbauöffnungen, und wie ist das dann mit Strom und Kabeln?
  • Evtl. Wechsel der Betriebsart von „vorkonfigurierte WLAN-Zugangsdaten“ auf „autonomer Access-Point“

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

siebzehn + drei =