Wahrsager

Mein zwei­tes Pro­jekt habe ich bei inst­ruc­ta­bles gefun­den: den For­tu­ne-Tel­ler. Bei mir heißt er ein­fach Wahr­sa­ger. Im Prin­zip macht er nichts ande­res, als zufäl­lig gene­rier­te Glücks­keks-Sprü­che und eine Glücks­zahl auf einem LCD aus­zu­ge­ben und anschlie­ßend dar­auf zu war­ten, nach einem Knopf­druck den nächs­ten Spruch los­zu­wer­den. Nichts atem­be­rau­ben­des also, aber irgend­wie wit­zig.
Weni­ger wit­zig waren hin­ge­gen mei­ne anfäng­li­chen Schwie­rig­kei­ten: zunächst funk­tio­nier­ten mei­ne bei­den alten LCDs nicht mehr. Ver­mut­lich habe ich sie vor Jah­ren schon geschrot­tet, und dabei tip­pe ich auf einen Kurz­schluß, als ich sie als Zusatz­dis­plays in mei­nen Rech­ner ein­ge­baut und mit­tels einer wag­hal­si­gen Dru­cker­port-Dru­cker­ka­bel-Selbst­bau­lö­sung ange­spro­chen habe. Die­ses ers­te Pro­blem habe ich gelöst, indem ich mir schö­ne, bun­te und zu alle­dem noch güns­ti­ge LCDs aus Polen über Ebay besorgt habe.

Das nächs­te, jedoch schnel­ler lös­ba­re Pro­blem, war der Anschluß des LCD auf dem Bre­ad­board, denn ich hat­te kei­ne Lust, irgend­wel­che alten, noch dazu ver­schie­de­nen, Pins an mei­ne neu­en LCDs zu löten — also ent­schied ich mich bei den ers­ten Ver­su­chen für eine flie­gen­de Ver­bin­dung: Ste­cker­chen ins Bre­ad­board — und das LCD irgend­wie schief genug und mit dem nöti­gen Druck in die rich­ti­ge Rich­tung so auf den Pins posi­tio­nie­ren, dass wider Erwar­ten Kon­takt her­ge­stellt wur­de — wenn­gleich auch manch­mal nur für ein paar Sekun­den.

Mitt­ler­wei­le habe ich ein paar zusätz­li­che Käbel­chen als Ver­bin­dung zwi­schen Bre­ad­board und Ardui­no ins Inven­tar auf­ge­nom­men, und neue Pin­leis­ten haben sich eben­falls dazu­ge­sellt. Zwi­schen­zeit­lich habe ich zu allem Über­fluß noch Frit­zing ent­deckt, so dass ich mei­ne Ulti­ma­ti­ve Wahr­sa­ger-Schal­tung auch demons­trie­ren kann:

Wahrsager Steckplatine

Das nächs­te Pro­blem­chen war nun das zuge­hö­ri­ge Pro­gramm an mei­ne Bedürf­nis­se anzu­pas­sen. Pau­lys, der Autor des Ursprungs­pro­jekts, hat näm­lich noch unzäh­li­ge LEDs invol­viert, um den Ein­druck des Nach­den­kens noch zu unter­stüt­zen — die LEDs hat­te ich aber nicht und woll­te sie auch nicht, also muss­ten sie weg. Fer­ner hat er eine alte 4-Bit-Libra­ry fürs Ardui­no ver­wen­det, die ers­tens Out-of-date ist, zwei­tens eini­ge Befeh­le ver­wen­det, die dum­mer­wei­se der offi­zi­el­len Lui­quid­Chrys­tal-Libra­ry, die mit der Ardui­no-Soft­ware aus­ge­lie­fert wird, nicht viel gemein haben.

  1. Die Initia­li­sie­rung geht anders, ins­be­son­de­re leich­ter von stat­ten, ein Liquid­Crys­tal lcd(12, 11, 5, 4, 3, 2); reicht völ­lig aus, spä­ter kommt noch ein lcd.begin(16, 2); hin­zu, um die Grö­ße des Dis­plays zu über­ge­ben
  2. lcd.println() lau­tet im Ori­gi­nal ein­fach nur lcd.print() — ein simp­les Suchen und Erset­zen hat hier gereicht
  3. lcd.cursorTo(row, col) ist in Wirk­lich­keit lcd.setCursor(col, row), d.h. die Rei­hen­fol­ge der Para­me­ter Zei­le (row) und Spal­te (col) sind ver­tauscht — nicht ganz so tri­vi­al mit suchen und erset­zen, ins­be­son­de­re wenn der eine Befehl bei 0 zu zäh­len anfängt, der ande­re bei 1. Aber auch lös­bar, da der Befehl nicht soo häu­fig vor­kommt.
  4. lcd.leftScroll(16, 50) [ver­schie­be den Bild­schirmin­halt um 16 Zei­chen nach links und war­te bei jedem Schritt 50 Mil­li­se­kun­den] ist eine Funk­ti­on, die über­haupt nicht exis­tiert. Sie muss umge­schrie­ben wer­den, was aber auch nicht so schwie­rig ist:
    for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
    lcd.scrollDisplayLeft();
    delay(50);
    }
  5. Die Pin-Bele­gung habe ich dann auch noch an mei­ne Bedürf­nis­se ange­passt…

Down­load: Ardui­no-Code | Frit­zing-Datei

Schreibe einen Kommentar

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