Hallo zusammen, ich versuche gerade ein Standard 16x2 LCD per PCF8574 I2C-Adapter an einem Arduino Uno in Betrieb zu bekommen. Ich habe jetzt die Bibilotheken LiquidCrystal_I2C 1.1.2 und LiquidCrystal_PCF8574 getestet. In beiden Fällen zeigt das Display in beiden Zeilen jeweils die korrekte Ausgabe in den ersten 8 Stellen an. Die 9.-16. Stelle bleibt aus, auch wenn ich den Cursor von Hand auf die hinteren Stellen setze. Man könnte fast meinen, es wäre ein 16x1-Display, aber die Platine hat beide ICs drauf und vor der Initialisierung sind alle 16 Zeichen der ersten Zeile grau... Hat von euch schon mal ein Display mit so einem Defekt gehabt? Es ist ein QY-1602A Display mit Hintergrundbeleuchtung.
Hallo, es ist halt anders organisiert; ich habe selbst ~4 Stück im Einsatz. Es ist als 2x16 Zeichen Display zu initialisieren und entsprechend an zu sprechen. Ok? Bei mir steht diese Info im Datenblatt.
Bernhard S. schrieb: > Hat von euch schon mal ein Display mit so einem Defekt gehabt? Die Frage ist ob das Display einen defekt hat, was ich erst einmal ausschließen würde. Hast Du ein weiteres Display zum testen? Der Fehler wird wohl eher im Code liegen. Die Verdrahtung wird richtig sein, es werden ja Zeichen dargestellt. Trotzdem, poste mal die Schaltung und den Code.
An meinem AT89C5131 läuft genau der Displaytp mit 7 IO an einem Parallelport. Daher gehe ich von einem Standard-Hitachi-Kompatiblen mit 16x2 Zeichen aus. Auch der 4-Bit-Modus wird da genutzt. Am Arduino ist jetzt nur noch der PCF8574-Adapter dazwischen. Von den I2C-Adaptern habe ich leider nur einen hier (am Montag komme ich wieder an meinen Vorrat ran). Der geht auch, weil ja das Display per I2C initialisiert wird und die ersten Zeichen jeder Zeile korrekt sind. In der Initialisierung der LiquidCrystal_I2C wird auch das Function-Set Register mit 2-Zeilen-Modus initialisiert. Die Defines in der H-Datei passen auch.
1 | #include <Wire.h> |
2 | #include <LiquidCrystal_I2C.h> |
3 | |
4 | LiquidCrystal_I2C lcd(0x27,16,2); // LCD address 0x27, 16 chars 2 line display |
5 | |
6 | void setup() |
7 | {
|
8 | lcd.init(); // initialize the lcd |
9 | lcd.backlight(); |
10 | |
11 | lcd.home(); |
12 | |
13 | lcd.print("Hello world... "); // only "Hello Wo" visible |
14 | lcd.setCursor(0, 1); |
15 | lcd.print("0123456789012345"); // only "01234567" visible |
16 | |
17 | }
|
18 | void loop() |
19 | {
|
20 | // nothing else
|
21 | delay(1000); |
22 | }
|
Bernhard S. schrieb: > An meinem AT89C5131 läuft genau der Displaytp mit 7 IO an einem > Parallelport. Daher gehe ich von einem Standard-Hitachi-Kompatiblen mit > 16x2 Zeichen aus. Auch der 4-Bit-Modus wird da genutzt. > Am Arduino ist jetzt nur noch der PCF8574-Adapter dazwischen. Dann guck doch hinter dem I2C-Adapter auf der Schnittstelle des Displays, ob die Signale dort in Ordnung sind, insbesondere ob der Display-Prozessor genügend Zeit für die Kommandoausführung bekommt.
Schreib ein Zeichen direkt an jede Kombination von Zeile/Spalte, die die Datenfeldbreiten hergeben.
Hallo Bernhard Ersetze mal diesen Code [c] LiquidCrystal_I2C lcd(0x27,16,2); // LCD address 0x27, 16 chars 2 line display void setup() { lcd.init(); // initialize the lcd lcd.backlight(); [c] durch diesen: [c] //(Addr EN RW RS D4 D5 D6 D7 BL Backlight polarity) LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); void setup(); lcd.begin(16,2); //Digits und Zeilenzahl anpassen [c] Anmerkung: laut Dokumentation zum LCD-Library werden Digits und Zeilenzahl nicht in der Definition des LCD-Objektes, sonder mit [c]lcd.begin(Digits, Zeilenzahl);[c] definiert. Gruss GroberKlotz
Ein anderes Display funktioniert. Da war bei dem ersten Display scheinbar wirklich der Spaltentreiber für die 2. Displayhälfte defekt. Hatte ich bei >30 verbauten Diplays auch noch nicht...
Bernhard S. schrieb: > Ein anderes Display funktioniert. Da war bei dem ersten Display > scheinbar wirklich der Spaltentreiber für die 2. Displayhälfte defekt. Bernhard S. schrieb: > vor der > Initialisierung sind alle 16 Zeichen der ersten Zeile grau... Dann sollten die Treiber aber nicht defekt sein. Ist das 2. LCD genau vom gleichen Typ? Wenn nicht, vielleicht ist das 1. LCD als 8*4 anzusteuern.
Beide Displays sind aus der selben Charge.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.