LCD Display Textformatierung mit Arduino

Hallo @all,

habe mir schon vor einiger Zeit einen Arduino Uno gekauft mit dem ich auch schon gute fortschritte in der Programmierung gemacht habe. Letztens habe ich mit ein LCD-Display (4x16) gekauft dass ich auch ohne weiter Probleme in Betrieb nehmen konnte.

Nun hab ich folgendes Programm zum testen und etwas herumspielen geschrieben:

#include

LiquidCrystal lcd(7,8,9,10,11,12,13);

void setup()
{
lcd.begin (16,4);
}

void loop()
{
lcd.setCursor (0,0);
lcd.print („Guten Tag“);
lcd.setCursor (0,1);
lcd.print („Press Enter“);
lcd.setCursor (0,3);
lcd.print(„to start“);
}

Das Programm gibt den Text aus „Guten Tag“ (Zeile 1), „Press Enter“ (Zeile2), (Zeile 3 bleibt leer) und in Zeile vier schreibt es „to start“.
Nun ist es so, dass in der vierten Zeile der Text mittig erscheint und ich bei anderen kleineren Testversuchen auch mit der dritten Zeile Probleme bei der Ausrichtung hatte.
Nach einiger Recherche bin ich auch auf eine Seite gestoßen die den Tipp gegeben hatte, einfach leerzeilen einzufügen, das hatte allerdings leider auch nichts gebracht.

Jetzt zur eigentlichen Frage:
Wie kann ich mit dem Arduino eine bessere Formatierung erreichen? Gibt es da irgendwelche Tricks?

Für eure Unterstützung wäre ich sehr dankbar, da ich ein größeres Projekt plane und dazu dieses Wissen verwenden kann/muss.

Grüße
kleiner.kaktus

Hallo,

ersetze doch mal die Zeile

lcd.setCursor (0,0);

durch

lcd.clear();

Grüße
fribbe

Hallo fribbe,

danke für deinen Tipp!
Hat leider nicht funktioniert.
Habe mal ein anderes kleines Programm geschrieben um die Position der ersten Zeichen in den Zeilen drei und vier festzustellen.
Diese sind vom linken Rand vier Zeichen nach rechts versetzt. Die ersten beiden Zeilen passen und werden auch ganz normal angezeigt.

Für weitere Hilfe und Tipps wäre ich dankbar!

Grüße kleiner.kaktus

Hallo kleiner.kaktus,

bitte teile mir einmal mit:

  • welches LC-Display du nutzt
  • unter welcher Arduino-IDE du arbeitest (Bersion)

Dann bitte den kompletten Programmcode (Sketch).

Viele Grüße

fribbe

Hallo Fribbe,

ich verwende einen Arduino UNO mit der Softwareversion 1.0.4!
Das Display ist ein 4x16 Zeichen LCD Display von Reichelt (Teilenr. LCD 164A BL) mit der Bezeichnung
„LCD 164A BL : LCD Dot-Matrix-Modul, 4x16 Zeichen, blau“

Das Srcipt mit dem ich die Position des ersten Zeichens auf dem Display festgestellt habe ist dieses hier, es zeichnet mit beim ersten Zeichen einer Zeile ein „X“ ein:

#include

LiquidCrystal lcd(7,8,9,10,11,12,13);

void setup()
{

lcd.begin (16,4);
lcd.clear ();
lcd.noBlink ();
lcd.leftToRight ();
lcd.noCursor ();
}

void loop()
{
lcd.setCursor (0,0);
lcd.write („x“);
lcd.setCursor (0,1);
lcd.write („x“);
lcd.setCursor (0,2);
lcd.write („x“);
lcd.setCursor (0,3);
lcd.write („x“);
}

Evtl. ist noch zu erwähnen, dass ich das Display nicht mit 8 Datenpins ansteuere, sondern mit 4 pin (D4 -D7).
Vielen Dank für deine Bemühungen!

Grüße kleiner.kakatus

Hallo fribbe,

jetzt melde ich mich noachmal!
Habe bei den Befehlen zur Cursorpositionierung in Zeilen drei und vier einen negativen Bezug geschrieben (setCursor (-4,3)). Das hat jetzt auch funktioniert, sodass die Zeilen 3 und 4 jetzt bündig mit den Zeilen eins und zwei beginnen.

Jetzt habe ich noch eine andere Frage. Es gibt doch den Befehl scrollDiaplayLeft (). Kann ich diesen auch irgendwie nur auf einzelnen Zeilen beziehen? Habe ihn bisher nur für alle Zeilen bzw. für den gesamten Anzeigeinhalt verwenden können!

Hoffe du oder auch ander können mir an dieser Stelle helfen!
Wenn das funktionieren sollte, könnte ich den Befehl in den Setup-Teil einbauen, sodass ich dann in der Loop wieder das ganz normale Referenzsystem habe! :smiley:

Grüße kleiner.kaktus

Hallo,

du benutzt ja die Bibliothek/Library

LiquidCrystal.h

die für Hitachi HD44780 und kompatible Kontroller geeignet ist. Das von dir verwendete Display

http://www.reichelt.de/Hintergrund-gruen/LCD-164A-LE…&

wird ja durch einen KS0080B-Kontroller angesteuert. Inwieweit dieser „Hitachi-kompatibel“ ist, entzieht sich meiner Kenntnis.

Es könnte also durchaus sein, daß es Kompatibiltätsprobleme gibt und du auf die Bibliothek verzichten oder diese anpassen müßtest. Kann ich aber nicht genau sagen, da ich nicht über dieses Display verfüge.

Vielleicht auch von Interesse:

http://www.mikrocontroller.net/topic/86823

Zu

scrollDisplayLeft()

findest du hier einige interessante Hinweise:

http://arduino.cc/en/Tutorial/LiquidCrystalScroll

Viele Grüße

fribbe

Hallo fribbe,

du benutzt ja die Bibliothek/Library

LiquidCrystal.h

die für Hitachi HD44780 und kompatible Kontroller geeignet
ist. Das von dir verwendete Display

http://www.reichelt.de/Hintergrund-gruen/LCD-164A-LE…&

wird ja durch einen KS0080B-Kontroller angesteuert. Inwieweit
dieser „Hitachi-kompatibel“ ist, entzieht sich meiner
Kenntnis.

Es könnte also durchaus sein, daß es Kompatibiltätsprobleme
gibt und du auf die Bibliothek verzichten oder diese anpassen
müßtest. Kann ich aber nicht genau sagen, da ich nicht über
dieses Display verfüge.

Es gibt noch ein weiteres Problem:

Die Frage ist noch, wie der Controller mit dem Display verdrahtet ist!

Die Controller können meist mehr Segmente ansteuern, als das Display baht, bzw, die Controller werden einfach kaskadiert, wenn ein einzelner nicht ausreicht. Hierbei gibt es dann mehrere Möglichkeiten der Verdrahtung. Dies macht aber der Modulhersteller und hat mit dem Controller nichts zu tun.
Es ist also so, dass unterschiedliche Display-Module, mit der selben Zeichenzahl und dem selben Controller, etwas anders angesteuert werden müssen.

MfG Peter(TOO)

Hallo ihr beiden,
jetzt melde ich mich nach ein paar tagen nochmal!
Danke für eure Hilfe, das mit dem Controller leuchtet mir ein :wink:
Für meine Zwecke wird es erst mal ausreichen wenn ich die Zeichensetzung mit der Verschiebemethode hinbekomme.

Danke für eure Tipps und auch den Link, war mir doch sehr hilfreich:smile:

Grüße
kleiner.kaktus