OK, ich gab mich also geschlagen und habe mir zum Beginn eine Handvoll UNO-Kopien besorgt. Displays hatte ich eh noch in meinem Fundus. Auch hatte ich beim Chinamann i2c Adapterplatinen für die LCDs besorgt. Selbstredend waren die ohne weitere Beschreibung. Aber billig. ;)
Die i2c Platine wird einfach in voller Schönheit mit der LCD verbunden
Bis es soweit kam, waren einige Hürden zu umschiffen..
Und genau da merkt man, daß man ohne Hintergrundwissen oder gutes Händchen bei Google auf verlorenen Posten steht. Der erste Treffer ging ins Microcontroller-Forum. Ich verlinke es hier nicht, weil über den Beitrag sollte man besser den Mantel des Schweigens decken. Kurz und gut, so verschreckt man ambitionierte Neulinge.
Also weitergesucht, und irgendwo augenscheinlich passende Libs gefunden. Dummerweise stockte es dort bereits. Bei der ersten Lib fehlten mir einige wichtige Infos, z.B. wo die Pins deklariert werden. Als C-Neuling ist es für mich noch schwer, mich dort durchzuwühlen. Es folgten weitere Links zu angeblich passenden Libs, welche ich auch brav importiert habe um dann direkt wegen Compilerproblemen hängenzubleiben. Dabei ist mir dann eine Besonderheit der Arduino IDE aufgefallen. Es reicht nicht, wenn man bei augenscheinlich falschen Libs nur die Verzeichnisse umbenennt. Nein, man muss sie komplett rausnehmen. Muss man wissen... Zudem auch noch verschiedene Libs mit gleichen Namen aber anderen Funktionen durchs Netz geistern. Prima.
OK, irgendwann habe ich die Bezeichnung der Platine gefunden: LCD1602 Also weitergesucht und endlich auch eine Lib gefunden. Aber es wollte immer noch nicht. Grrrr! Irgendwann blieb mir nichts anderes übrig als jeden Pin durchzupiepen um weiterzukommen. Hier mein Ergebnis:
// lcd_I2C_test
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27 // a0, a1, a2 offen
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin,BACKLIGHT_PIN,POSITIVE);
void setup()
{
// Hintergrundbeleuchtung einschalten
pinMode ( BACKLIGHT_PIN, OUTPUT );
digitalWrite ( BACKLIGHT_PIN, HIGH );
lcd.begin(16,2); // LCD initialisieren
}
void loop()
{
lcd.home (); // Links oben
delay(200);
lcd.print("Na endlich! Das");
lcd.setCursor ( 0, 1 ); // CRLF
lcd.print ("war ne Geburt...");
delay(2000);
lcd.noBacklight(); // Hintergrundbeleuchtung Blink
delay(2000);
lcd.backlight();
}
Keine Kommentare:
Kommentar veröffentlichen