Arduino LCD

Hallo

Ich habe von Arduino das Starterkit mit LCD, nun habe ich eine frage zum LCD.
Gibt es bei dem LCD Displays ein oben und unten?
Also kommt es drauf an wie man das LCD Display einbaut? Ich frage nur weil ich das Projekt Kristallkugel nach gebaut habe und ich mein Aufbau immer rum drehen muss um was zu lesen.
Ich habe mal ein Bild angefügt das erklärt das vielleicht besser.

Bild

neuling321:
Ich habe mal ein Bild angefügt das erklärt das vielleicht besser.

Das Bild ist leider nicht das original Display. Das hättest du besser fotografieren sollen.

Aber ich vermute, es ist ein 2x16 LCD, dann ist die Einbaurichtung wichtig.
Das kannst du nicht umstellen.

Ok, danke das wollte ich wissen. Wollte mir mit Fritzing eine Platine machen, da muss ich dann aufpassen wie ich das Display einbaue.

Danke

Das Bild ist aus dem Buch abfotografiert, so habe ich es auch aufgebaut, ja ist ein 2x16 LCD

Jetzt muss ich doch noch mal fragen.

Wenn ich das LCD so anspreche zeigt er beide reihen an:

lcd.clear();
lcd.begin(16, 2);
lcd.print("test");
lcd.setCursor(0, 1);
lcd.print("test01");

Wenn ich es aber so anspreche, zeigt er mir nur Test in der unteren Zeile an.

lcd.clear();
lcd.begin(0, 1);
lcd.print("test");
lcd.setCursor(16, 2);
lcd.print("test01");

Geht die Zählung von unten nach oben?

setCursor (Spalte,Zeile) // Spalte von 0 -15; 0--> links, Zeile von 0 -1; 0--> oben

Mhh irgendwas stimmt da nicht, bei mir ist 16 oben, so ist es auch in dem Programm Code bei Arduino geschrieben, aber ich verstehe das nicht, das ist völlig unlogisch.

Also wenn ich auf das Display schaue dann ist links 0, aber wo ist Zeile 1 und wo ist Zeile 2 ?
Bei mir ist Zeile 2 oben und Zeile 1 unten, das macht doch keinen Sinn

Egal was ich schreibe, bei beiden Varianten steht der Text in der oberen Zeile

lcd.clear();
lcd.setCursor(4, 1);
lcd.print("test");

oder

lcd.clear();
lcd.setCursor(4, 2);
lcd.print("test");

Du must dabei beachten, die Zählweise ist 0 bis 15 für die Spalte und 0 bis 1 für die Zeile. Dabei ist die Zeile 0 normalerweise oben.
Und in deinem 2. Beispiel ist die Zeile "lcd.begin(0,1)" ist falsch, da hier der Library die Displaygröße mitgeteilt wird.

Sieh dir bitte mal die Beispiele zur Library an, da ist alles wunderbar dokumentiert.

Habe den Fehler gefunden,

Wenn ich es richtige sehe , muss ich jedes mal wenn ich was neues Schreibe, muss ich den Code wie folgt aufbauen.

lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Test 01");
lcd.setCursor(0, 1);
lcd.print("test 02");

wenn ich dann wieder was schreiben will

lcd.clear();
lcd.begin(16, 2); ----------> muss ich das vor jedem schreiben neu bestimmen? ich habe das doch im Setup deklariert.
lcd.setCursor(0, 0);
lcd.print("Test 03");
lcd.setCursor(0, 1);
lcd.print("Test 04");

Fehler gefunden, im Buch ist das nicht ganz so ersichtlich beschrieben.

Ich habe im Programm Code öfters "begin(0,1)" usw. drin gehabt, dadurch hat dann natürlich das "setCursor" nicht mehr gestimmt. So nun klappt alles.

Vielen Dank.

Wichtig ist, dass du das Display richtig initialisierst.
Bei einem Display mit 16 Zeichen und 2 Zeilen geht das mit

lcd.begin(16, 2);

In deinem zweiten Beispiel steht aber

lcd.begin(0, 1);

Das ist falsch!

Siehe: LiquidCrystal - Arduino Reference

Edit: Ach und zu spät... schon selbst gefunden - ist ja ausgezeichnet! :slight_smile:

Trotzdem Danke, der Fehler passiert mir auf jeden fall nicht mehr :smiley:

Die Anweisung "lcd.begin(16, 2)" brauchst du nur einmal im Setup schreiben, danach nicht mehr.