LiquidCrystalI2C Print nur ein Zeichen

Auf meinem Uno möchte ich auf dem Display 1602A mit I2C einen Text ausgeben.
Das Display ist angeschlossen, die Bibliothek installiert und funktioniert soweit.
Der Cursor wird positioniert, der Text wird übergeben, aber es wird nach der Positionierung nur der erste Buchstabe ausgegeben.
Den zweiten Buchstaben bekomme ich nur nach neuer Positionierung mit neuer Printanweisung.
Ich habe leider keine Beschreibung zu der Bibliothek und kenne die Argumente und die Syntax dazu nicht.
Frohe Ostern Hans

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); //Im Setup wird der LCD gestartet 
lcd.backlight(); //Hintergrundbeleuchtung einschalten (lcd.noBacklight(); schaltet die Beleuchtung aus). 
String Text = "Hallo Display";
}

void loop() {
  delay(2500);
lcd.setCursor(0, 0);//Hier wird die Position des ersten Zeichens festgelegt. In diesem Fall bedeutet (0,0) das erste Zeichen in der ersten Zeile. 
// lcd.print
lcd.print ("Hallo Welt       ");
lcd.setCursor(1, 0);
lcd.print("a");

lcd.setCursor(0, 1);// In diesem Fall bedeutet (0,1) das erste Zeichen in der zweiten Zeile. 
lcd.print("Guten Morgen!");  
lcd.setCursor(1, 1);// In diesem Fall bedeutet (0,1) das erste Zeichen in der zweiten Zeile. 
lcd.print("u");  
delay(2500);
lcd.setCursor(0, 0);
lcd.print("Sonnenschein     "); 
lcd.setCursor(1, 0); 
lcd.print("o         "); 
lcd.setCursor(0, 1);
lcd.print("Kein Regen!  ");
lcd.setCursor(1, 1);
lcd.print("e  ");      
}

du hast vermutlich eine veralterte Bibliothek installiert.
alte lib von der Festplatte löschen, neue installieren.

Du kannst auch meine Library probieren.
http://werner.rothschopf.net/202009_arduino_liquid_crystal_i2c_en.htm

1 Like

Die Ausgaben im Originalpost sind beide ein Zeichen zu lang, das vermasselt die korrekte Anzeige

sollte kein Problem dar stellen,

Danke für die Tipps.
Der Text zu lang kann nicht die Ursache sein.
Ich habe den Beispiel-Sketch vom Autor genommen, und da auch den Text gekürzt. Leider ohne Erfolg.
Mein nächster Test wäre mit einem Arduino Mega gewesen, und danach das gleiche Display auszuleihen.
Jetzt versuche ich mal deine Library. bekommt Die auch das Signal auf AnalLog In A4 und A5

Hans

Ich nutze diese Lib, die wird auch noch gepflegt. In der keywords stehen die Befehle

Das lässt sich nachlesen, indem Du in das Lib-Verzeichnis gehst und Dir dort die Keywords.txt und die sourcedatei endend auf .cpp ansiehst.
Die Funktionen sind in der Regel gut dokumentiert.

Im Normalfall gibt es auch zu jeder lib wenigstens ein Beispielcode.
Den erstmal ausführen und sehen, ob der so läuft, wie er soll.
Dann darauf aufbauen.

Ich verstehe nur Dein Problem noch nicht.
Heisst das:

das von "Hallo Wellt" nur das H ausgegeben wird?

Ja, von jedem String wird nur das erste Zeichen ausgegeben. Mit einer neuen Cursor-Anweisung und neuem Printbefehl kann ich wieder ein Zeichen ausgeben. Die Anzeige nimmt also nur einzelne Buchstaben an.
Habe gerade die Arduino IDE gelöscht und neu installiert, weil ich die alte Library nicht gefunden habe.
Hans

Hi,

lies mal hier den Abschnitt LiquidCrystal_I2C
https://arduino-projekte.webnode.at/fremdlibraries/

Gruß André

Vielen Dank.
Die Lib habe ich gezipt gezogen, Wohin muss ich die Lib auf meinem PC kopieren, dsamit der Sketch sie laden kann?

Hans

Einfach mal Doku lesen... wie wäre es damit ....

Das lese ich gerne, nur muss ich wissen, dass es diese Erklärung gibt. Bisher habe ich nur die schon vorhandenen Biliotheken gebraucht.
Die neue Lib ist jetzt auch schon installiert, und das Programm bringt immer noch nur das erste Zeichen vom String.
Leider.

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
void setup() {
lcd.init(); //Im Setup wird der LCD gestartet 
lcd.backlight(); //Hintergrundbeleuchtung einschalten (lcd.noBacklight(); schaltet die Beleuchtung aus). 
}

void loop() {
  delay(2500);
lcd.setCursor(0, 0);//Hier wird die Position des ersten Zeichens festgelegt. In diesem Fall bedeutet (0,0) das erste Zeichen in der ersten Zeile. 
lcd.print ("Horst");
delay(1500);
lcd.setCursor(1, 0);
lcd.print("Paul");
lcd.setCursor(0, 1);// In diesem Fall bedeutet (0,1) das erste Zeichen in der zweiten Zeile. 
lcd.print("Anna!");  
delay(1500);
lcd.setCursor(1, 1);// In diesem Fall bedeutet (0,1) das erste Zeichen in der zweiten Zeile. 
lcd.print("Ulrike");  
delay(2500);
lcd.setCursor(0, 0);
lcd.print("Sabine"); 
delay(1500);
lcd.setCursor(1, 0); 
lcd.print("Fritz"); 
lcd.setCursor(0, 1);
lcd.print("Klaus!");
delay(1500);
lcd.setCursor(1, 1);
lcd.print("Peter");      
}

Du musst natürlich auch die andere Library einbinden!!!

Darum hab ich ja geschrieben, LÖSCHE deine alte Library.
Schau dir die Beispiele der NEUEN LIBRARY an wie man ein LCD anspricht.

Diese Lib und die Beispieldatei habe ich gestern schon geladen und getestet.
Außer, dass die ersten Zeichen damit nicht am Zeilenanfang ausgegeben werden, habe ich keine Verbesserung gemerkt, auch heute nicht.
Die lcd 20,4 habe ich so versucht, und auch auf 16,2 umgestellt. Beide Versionen gehen nicht.
Jetzt werde ich mal telefonieren, um mir ein baugleiches Display auszuleihen.

Hans

kann mit deinem Sketch nicht funktioniert haben.

Welches Betriebssystem hat dein Computer?

Mein Betriebssystem ist Windows 10
Das andere Display macht genau den gleichen Fehler.
Danke für Eure Hilfe
Wenn mein Display 2 Zeile je16 Zeichen hat, dann muss ich doch die lcd mit 16,2 initialisieren oder nicht?

Hans

Deine Libs sind unter Dokumente /Arduino/libarys
Dort die lcd löschen

Hura, jetzt bekomme ich den ganzen String angezeigt.
Dazu habe ich den ChipTyp "PCF8574" abgelesen, und mit dem Suchbegriff in den Libs gesucht und gefunden.
"HD44780_LCD_PCF8574"
Das mitgelieferte Beispielprogramm läuft, und ich werde es in mein Sketch einbauen und anpassen.
Vielen Dank an Alle, die mir behilflich waren.
Hans

schau unter File / Preferences wo deine aktuelles "Sketchbook location" ist

gehe in den Explorer in dieses Verzeichnis.
Wechsle in das Unteverzeichnis libraries

Lösche dort alle alten/nicht benötigten LCD Libraries - sonst schlägst du in 2 Wochen wieder auf weil du irgendwelche Libraries auf deinem PC hast, die nicht funktionieren.

Grins, nein die anderen LCD-Libs habe ich schon gelöscht.
Diese Lib teste ich gerade und gebe jetzt zweizeilig meinen eigenen Text aus. Momentan kämpfe ich mit einem Übergabestring, char testString[] = "Hello Fisch" der sich wie eine Konstante verhält. Er will sich einfach nicht in "blaue Maus " ändern lassen.
Hans