Wahrsager

Mein zweites Projekt habe ich bei instructables gefunden: den Fortune-Teller. Bei mir heißt er einfach Wahrsager. Im Prinzip macht er nichts anderes, als zufällig generierte Glückskeks-Sprüche und eine Glückszahl auf einem LCD auszugeben und anschließend darauf zu warten, nach einem Knopfdruck den nächsten Spruch loszuwerden. Nichts atemberaubendes also, aber irgendwie witzig.
Weniger witzig waren hingegen meine anfänglichen Schwierigkeiten: zunächst funktionierten meine beiden alten LCDs nicht mehr. Vermutlich habe ich sie vor Jahren schon geschrottet, und dabei tippe ich auf einen Kurzschluß, als ich sie als Zusatzdisplays in meinen Rechner eingebaut und mittels einer waghalsigen Druckerport-Druckerkabel-Selbstbaulösung angesprochen habe. Dieses erste Problem habe ich gelöst, indem ich mir schöne, bunte und zu alledem noch günstige LCDs aus Polen über Ebay besorgt habe.

Das nächste, jedoch schneller lösbare Problem, war der Anschluß des LCD auf dem Breadboard, denn ich hatte keine Lust, irgendwelche alten, noch dazu verschiedenen, Pins an meine neuen LCDs zu löten - also entschied ich mich bei den ersten Versuchen für eine fliegende Verbindung: Steckerchen ins Breadboard - und das LCD irgendwie schief genug und mit dem nötigen Druck in die richtige Richtung so auf den Pins positionieren, dass wider Erwarten Kontakt hergestellt wurde - wenngleich auch manchmal nur für ein paar Sekunden.

Mittlerweile habe ich ein paar zusätzliche Käbelchen als Verbindung zwischen Breadboard und Arduino ins Inventar aufgenommen, und neue Pinleisten haben sich ebenfalls dazugesellt. Zwischenzeitlich habe ich zu allem Überfluß noch Fritzing entdeckt, so dass ich meine Ultimative Wahrsager-Schaltung auch demonstrieren kann:

Wahrsager Steckplatine

Das nächste Problemchen war nun das zugehörige Programm an meine Bedürfnisse anzupassen. Paulys, der Autor des Ursprungsprojekts, hat nämlich noch unzählige LEDs involviert, um den Eindruck des Nachdenkens noch zu unterstützen - die LEDs hatte ich aber nicht und wollte sie auch nicht, also mussten sie weg. Ferner hat er eine alte 4-Bit-Library fürs Arduino verwendet, die erstens Out-of-date ist, zweitens einige Befehle verwendet, die dummerweise der offiziellen LuiquidChrystal-Library, die mit der Arduino-Software ausgeliefert wird, nicht viel gemein haben.

  1. Die Initialisierung geht anders, insbesondere leichter von statten, ein LiquidCrystal lcd(12, 11, 5, 4, 3, 2); reicht völlig aus, später kommt noch ein lcd.begin(16, 2); hinzu, um die Größe des Displays zu übergeben
  2. lcd.println() lautet im Original einfach nur lcd.print() - ein simples Suchen und Ersetzen hat hier gereicht
  3. lcd.cursorTo(row, col) ist in Wirklichkeit lcd.setCursor(col, row), d.h. die Reihenfolge der Parameter Zeile (row) und Spalte (col) sind vertauscht - nicht ganz so trivial mit suchen und ersetzen, insbesondere wenn der eine Befehl bei 0 zu zählen anfängt, der andere bei 1. Aber auch lösbar, da der Befehl nicht soo häufig vorkommt.
  4. lcd.leftScroll(16, 50) [verschiebe den Bildschirminhalt um 16 Zeichen nach links und warte bei jedem Schritt 50 Millisekunden] ist eine Funktion, die überhaupt nicht existiert. Sie muss umgeschrieben werden, was aber auch nicht so schwierig ist:
    for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
     lcd.scrollDisplayLeft();
     delay(50);
     }
    
  5. Die Pin-Belegung habe ich dann auch noch an meine Bedürfnisse angepasst...

Download: Arduino-Code | Fritzing-Datei

Gib auch Du Deinen Senf dazu