Pollin LCD TC1604A-04 - Zeilenversatz Problem.

Hallo …

ich habe mein 2 zeiliges LCD Display 216 gegen ein 4 Zeilges ( 416 ) von Pollin ( Bestellnr. 120 688) ausgetauscht… Standard Beschaltung wie in den Referenzen von Arduino angegeben. Betrieben an einen Mega 2560 . Die oberen 2 Zeilen werden wie gewohnt dargestellt, auch die Adressierung der Cursor Position mit lcd. setCursur (x,y) klappt in den oberen beiden Reihen… Das Display ist mit lcd.begin(16,4) initialisiert.

Zeilen 3 & 4 fangen erst an der 5. Spalte jeweils an… Ich habe das "Hello World Beispiel angepasst…

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
    lcd.begin(16, 4);
    lcd.print("hello, world!");
}

void loop() {
    lcd.setCursor(0, 1);
    lcd.print(millis()/1000);
    lcd.setCursor(0, 2);
    lcd.print(millis()/1000);
    lcd.setCursor(0, 3);
    lcd.print(millis()/1000);
}

Das Display sieht wie folgt aus ,

"hello, world! "
"2781 "
" 2781 "
" 2781 "

Auch die Beispiele mit der Laufschrift sehen auf dem Display ähnlich aus…

Kennt jemand die Problematik, oder hat eine Lösung ? Oder habe ich einfach zu “billig” bei Pollin gekauft ?

Danke vorab für Eure Tipps

Gruß
4XX

Hast du mal probiert, das LCD als 20x4 zu initialisieren? Bringt das vielleicht bessere Resultate?

Danke für den Tipp, aber 20X4 Init ist der gleiche Fehler..

ich hab ein wenig gegoogled und eine , wenn auch nicht tolle Lösung gefunden..

ab der 3. Zeile die Spaltenadressierung mit -4 , also lcd.setCursor(-4,2) bzw. (-4,3) adressieren.. Dann sehen die Zeilen auf dem Display gut aus.. Aber das kanns ja nicht sein.. :-(

und in der liqiud Library will ich nix anpassen.. Könnte ja sein, das ich auch noch mal ein weiteres ( richtig funktionierendes ) Display verbaue..

Wer kann denn eine Empfehlung für ein 4 Zeiliges Display geben, das vernünftig anzeigt und auch nicht den Kostenrahmen sprengt.?

4XX

Hallo,

ich habe dieses http://www.amazon.de/gp/product/B00ALNHTVY/ref=oh_details_o00_s00_i00?ie=UTF8&psc=1 noch hier liegen. Hatte da auch mal kurz "Hello World" ausgegeben und kann mich nicht an einen Fehler erinnern. Ich hab's aber nicht ausgiebig getestet. Wenn Du aber ein, zwei Tage Zeit hast, probiere ich es mal aus.

Gruß, Ralf

Hallo Ralf,

das wäre nett und kommt nicht auf einen Tag oder mehr drauf an.. Ich habe mir jetzt erstmal geholfen und mir einen kleine Procedure geschrieben, die den lcd.setCursor ersetzt. Diese rechnet um und setzt dann den Cursor korrigiert auf. Im Coding kann ich dann die Originalen Koordinaten angeben SetCur(14,3); Sollte ich ein richtiges LCD haben, brauche ich nur im Coding ein global Change auf SetCur -> lcd.setCursor machen.. dann sollte alles passen ..

..und preiswert ist dein LCD auch noch.. und ich dachte mit 9,95 bin ich schon preiswert dabei.. :-(

Gruß Kurt

Hallo,

es gab mal eine Bibliothek für die Ansteuerung von LCDs, die diesen Fehler hatte.

Versuch mal Deine Bibliotheken auf den neusten Stand zu bringen.

Gruss Kurit

Meine LiquidCrystal Library ist, denke ich aktuell, da ich Arduino IDE 1.5.4 installiert habe.

Ich habe bei Pollin ins Datenblatt der LCD Anzeige geschaut.. Es ist ein SPLC780D1 or equivalent controller verbaut. Inwieweit der jetzt 100% kompatibel zum HD44780 ist, kann ich nicht beurteilen..

http://www.pollin.de/shop/dt/MTEzOTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_Modul_TC1604A_04.html

Gruß Kurt

Für den Arduino Mega solltest Du die IDE 1.0.5 verwenden (was aber nicht Dein Problem lösen wird). Grüße Uwe

Hallo Uwe,

Danke für den Hinweis.. Ich habe IDE 1.5.4 komplett deinstalliert und die 1.0.5 neu auf den Rechner gebracht.. Aber Du hast Recht.. keine Änderung an der LCD Zeilen Problematik.

Ich kauf mir ein anderes LCD mit originalem HD44780 Controler.

Gruß Kurt

Hallo,

so, wie versprochen, habe ich mal Kabelchen an das Display gelötet und es mal ausprobiert. Folgender Sketch

#include <LiquidCrystal.h>

const int numRows = 4;
const int numCols = 20;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
lcd.begin(numCols,numRows);
}

void loop() {
lcd.setCursor(0, 0);
lcd.write(“01234567890123456789”);
lcd.setCursor(0, 1);
lcd.write(“ABCDEFGHIJKLMNOPQRST”);
lcd.setCursor(0, 2);
lcd.write(“01234567890123456789”);
lcd.setCursor(0, 3);
lcd.write(“ABCDEFGHIJKLMNOPQRST”);

while(true)
;
}

Bringt die Ausgabe, die auf dem Foto zu sehen ist.

Da scheint also alles so zu funktionieren, wie es soll. Probiert habe ich es mit einem Duemilanove mit Arduino-IDE 1.0.5. Ich glaube aber nicht, dass das kriegsentscheidend ist. Um welches Display es sich handelt, habe ich ja weiter oben schon mal geschrieben.

[Edit:] Ach so, vielleicht solltest Du um ganz, ganz, ganz auf Nummer sicher zu gehen, diesen Sketch mal mit Deinem Display probieren? [/Edit]

Gruß,
Ralf

[OffTopic:] PS. Wenn ich Deinen Nickname sehe, denke ich Du bist Amateurfunker. Ich spiele schon seit einiger Zeit mit dem Gedanken auch die Lizenz zu erwerben. Darf ich Dich da ggfls. mal privat mit ein, zwei Fragen zu den Kosten und Orten der Prüfung behelligen?

IMG_2241.JPG

Hallo Ralf,

danke für den schnellen Test und die Mühe :) So soll's ausssehen auf dem LCD.. Dann werde ich mal das Display ordern ..

Werde nachher Dein Script nochmal in den Mega reinladen, aber ich habe wenig Hoffnung..

Ja, klar, schicke mir Deine Fragen gern per PN zu..

Gruß Kurt