I2C LCD PCF8574A zum Laufen bringen

Hallo,
für ein Projekt, dass ich vorbereite, wollte ich auch ein LCD 20x04 verwenden. Im Pins zu sparen soll es I2C sein. Dann benötige ich nur VCC GND A5(SCL) und A4(SDA).
Leider habe ich ein Problem mit dem setup. Mit dem Tool I2C-Scanner habe als Adresse 0x3F erhalten. Das war der erste Schritt.
Nun habe ich gelesen, dass es wohl 2 verschiedene Typen von Chips auf dem kleinen Beipack-Board auf der Rückseite des LCD gibt. Typ1 PCF8574 und Typ2 PCF8574A. Den zweiten habe ich und das bestätigt auch die Adresse 0x3F.
Eigentlich habe ich laut Beschreibung die zugehörige Library LiquidCrystal_I2C für den Typ2 hinterlegt. Ich kann aber nicht sehen, ob dieses wirklich so ist. Da aber das Kompilieren des Sketch fehlerfrei läuft. gehe ich einmal davon aus. Sonst wäre auch die Zeile LiquidCrystal_I2C lcd(0x3F,20,4); in meinem kleinen Test-Sketch falsch und es sollte lcd.begin(); heißen statt lcd.init();

Trotzdem sehe ich auf dem LCD nicht den gewünschten Schriftzug. Nur Leere. Nur im SerialMonitor erscheint er. Was passiert ist das sekündliche Blinken durch delay(1000); im Sketch auf dem LCD.

Wo könnte mein Fehler stecken? Ich bin relativer Anfänger.
Ich verwende als IDE die Version 1.6.5.

HelloWorld-LCD-TEST.ino (523 Bytes)

Mfg

Siehst Du überhaupt etwas?
Mit lcd.setBacklight(LOW); schaltest Du die Hintergrund-Beleuchtung AUS - dann sieht man nicht sonderlich viel.
Wenn das LCD nicht initialisiert wurde (oder fehlerhaft), werden die Hälfte der Zeilen voll angezeigt.

Wenn Das auch nicht ist - hast Du Mal auf der Huckepack-Platine an dem Stellrädchen gedreht?
Damit änderst Du den Kontrast.

MfG

Also ich habe nun die Ausgabezeile im setup entfernt (siehe Anhang). Es ist egal, ob ich lcd.setBacklight(HIGH); oder lcd.setBacklight(LOW); schalte. Das LCD wird jedesmal hell.
Mit dem Stellrädchen habe ich den Kontrast geregelt. Er geht von "alles blau" bis maximal "alle Zeilen zeigen die weißen Rechtecke der XCharacters".
Dabei ist in der Mitte etwa nur die Zeilen 1 und 3 deutlich sichtbar (siehe Bild). Aber keine Textausgabe.
Den Kontrast konnte ich bei einem normalen LCD, mit allen Pins verdrahtet, auch so regeln. Dazu habe ich nur beim dritten PIN VO ein Poti geschaltet und so den Strom geregelt.

MFG

HelloWorld-LCD-TEST.ino (408 Bytes)

Also ich weis nicht wie viele LiquidCrystal_I2C libs im Umlauf sind.

(und ich weis sie auch nicht zu unterscheiden).

Deinen Konstruktor will meine nicht haben.

Ich habe da folgenden Varianten :

//LiquidCrystal_I2C lcd(0x20, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE); //alter Adapter
#define I2C_ADRESS 0x27
LiquidCrystal_I2C lcd(I2C_ADRESS, 2, 1, 0, 4, 5, 6, 7,3,POSITIVE); // Neuer Adapter

Die I2C Adressen sind hier nur Beispielhaft. Du hast das mit dem Scanner schon richig
gemacht.

Ich habe hier 2 Adaptertypen der Alte hat ein Trimpoti das an der Seite herausragt und
der Andere eins da liegt er mitten auf der Platine und wird nicht "seitlich" sondern "senkrecht"
verstellt.

Wie man sieht hat der eine eine positve Logik für das Backlight und der Andere eine negative.
Die anderen Parameter sind die Zuordnungen der Pinne des Displays.

Die Auflösung geben ich im lcd.begin an.
Ein Init brauche ich nur wenn ich z.b. die Wire.h erst im Setup initialisiere.
Dann gibt es vor dem Begin auch ein Init.

Ulli

4711engel:
Also ich habe nun die Ausgabezeile im setup entfernt (siehe Anhang). Es ist egal, ob ich lcd.setBacklight(HIGH); oder lcd.setBacklight(LOW); schalte. Das LCD wird jedesmal hell.
Mit dem Stellrädchen habe ich den Kontrast geregelt. Er geht von "alles blau" bis maximal "alle Zeilen zeigen die weißen Rechtecke der XCharacters".
Dabei ist in der Mitte etwa nur die Zeilen 1 und 3 deutlich sichtbar (siehe Bild). Aber keine Textausgabe.
Den Kontrast konnte ich bei einem normalen LCD, mit allen Pins verdrahtet, auch so regeln. Dazu habe ich nur beim dritten PIN VO ein Poti geschaltet und so den Strom geregelt.

MFG

Klares Zeichen für nicht richtig initialisiert !

Ulli

Versuche mal diese Bibliothek: GitHub - duinoWitchery/hd44780: Extensible hd44780 LCD library

Die sucht sich die Adresse und die Parameter selber.

Zu deinem Vorschlag: Den hatte ich so auch schon probiert. Dann habe ich aber bei der Library, die ich verwende und die angeblich für meinen Chip ist, immer eine Fehlermeldung beim Kompellieren: POSITIV nicht def." oder so ähnlich. Außerdem habe ich sketche gefunden, die dies so verwenden aber laut Schreiber wohl für den anderen Typen sind. Bei meiner Form, die ich so auch im Internet gefunden habe, geht das Kompilieren fehlerfrei durch.

MFG

Da es, wie schon geschrieben, unzählige I2C-Libraries für LCD gibt, musst du unbedingt immer ein Beispiel der Library nutzen.
Alles andere geht schief.

Ich habe hier eine Library gewählt, wo ich weiß, dass das Beispiel funktioniert.
Du musst nur deine Parameter anpassen.

Und auch wenn es fehlerfrei kompiliert, muss es nicht funktionieren.

Und wenn es dann funktioniert, kannst du ja alles andere auch anpassen.

Hallo HotSystem,

ich habe heute nachmittag so viele ausprobiert, aber mit deiner Library funkt es jetzt. Danke

Gruß

4711engel:
Hallo HotSystem,

ich habe heute nachmittag so viele ausprobiert, aber mit deiner Library funkt es jetzt. Danke

Gruß

Freut mich, dass ich helfen konnte.

Fazit: Immer Beispiel aus der verwendeten Library nutzen. :wink: