LCD mit I2C Modul zeigt nur eine komplett gefüllte Zeile

Hallo,
ich versuche seit einigen Tagen mein LCD Display mit I2C Modul zum laufen zu bekommen.
Der Arduino ist ein Mega2560, das I2C hat einen PCF8574A Chip (mit drei HEX Brücken; von einem chinesischen Händler auf ebay…), das LCD ist ein 1602A (also 16 Spalten, 2 Reihen).

Der Test-Code ist der folgende:

/*
Sketch to test and learn how to use LCD with I2C.
April 10th, 2018
*/

// LiquidCrystal_I2C - Version: Latest 
#include <LiquidCrystal_I2C.h>

// Arduino-LiquidCrystal-I2C-library-master - Version: Latest 
//#include <LiquidCrystal_I2C.h>

#include <Wire.h>

LiquidCrystal_I2C lcd(0x3F,16,2);
//LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //setting of LCD named lcd
// arguments: address, pins, positive = backlight


void setup() {
    lcd.begin(16,2);
    //lcd.backlight();
}

void loop() {
    lcd.setCursor(0,0);
    lcd.print("Hallo");
    lcd.setCursor(0,1);
    lcd.print("Robert!");
    
    delay(5000);
    
    lcd.setCursor(0,0);
    lcd.print("Hello");
    lcd.setCursor(0,1);
    lcd.print("World!");
    delay(5000);
}

Leider zeigt das LCD Display allerdings nach wie vor nichts an. Die erste Zeile des Displays ist mit Rechtecken gefüllt (also alle Pixel an), die zweite Reihe ist komplett aus. Ich habe bereits verschiedene I2C Bibliotheken probiert, aber leider keinen Erfolg erzielen können. Ich habe auch das Forum bereits abgegrast, aber jeweils keine erfolgreiche Lösung gefunden. Könnte es an einer Inkompatibilität der verschiedenen, getesteten Bibliotheken mit dem I2C Modul liegen? Wie umgeht man denn das Problem, dass Hardware und Software ggf. nicht zusammenpassen?

Es wäre super, wenn ihr mir irgendeinen Hinweis geben könnt, wie ich das Display (möglichst ohne ein neues I2C kaufen zu müssen) ansteuern kann.

Gruß, Robert

Hallo Robert,

ich habe mich die letzten Tage auch mit I²C - LCD - Ansteuerung rumgeplagt, allerdings selbstgebaut.
Ob ich Dir helfen kann, keine Ahnung. Aber evtl. der Lösung näher bringen.
Wird denn der I²C-Baustein am Arduino erkannt, also mit richtiger Adresse angesprochen? I²C - Scanner
Der PCF8574A hat die Adresse 0x38 wenn die 3 Brücken auf LOW sind. Brücken offen sollte HIGH sein??
Der PCF8574 wandelt von seriell nach 8x paralell, welcher der 8 Ports dann welchen der Pins am LCD ansteuert
liegt an der Library, die muss passen, es gibt verschiedene Belegungen.
LCD —> (BL-EN-RW-RS-D4-D5-D6-D7) <—> PCF8574 (7-4-5-6-0-1-2-3 oder z.Bsp. 3-2-1-0-4-5-6-7) …

Gruß André

Ich habe meine LCD mit Hilfe dieser Seite zum Laufen bekommen.
Leider gibt es viele zueinander inkompatible LCD-I2C-Libs.
Das Beispiel zum Testen sollte immer das von der jeweiligen Lib sein und bei Fragen im Forum bitte auch gleich den Link zur Lib mit einstellen.

Gruß Tommy

Hallo,
erstmal danke für euren Input!

@André: ich habe den I2C Scanner von Nick Gammon verwendet und der findet auch das Modul. Adresse: 0x3F. Das hab ich so im Code dann auch übernommen.

@Tommy: ich habe u.a. auch das LiquidCrystal Package von der Seite verwendet, die du erwähnt hast (das NewLiquidCrystal). Aber wie erwähnt hat der Test mit verschiedensten Bibliotheken nicht funktioniert.

Vllt noch ein Gedanke bzw. eine Frage: wie kommt es, dass auf der von dir bezeichneten Seite das LCD immer mit der Zeile

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

initialisiert wird (mal unabhängig von der genauen Adresse), wogegen, wenn ich das so verwende ein Fehler kommt und scheinbar von den Bibliotheken immer ein Befehl mit 3 Argumenten erwartet wird:

LiquidCrystal_I2C lcd(0x3F,16,2);

Habt ihr dazu eine Idee?
Gruß, Robert

Die Lib hat merere Konstruktoren und eine neue Version, wie ich gerade sehe (1.3.5).
Wie bereits geschrieben immer ein Beispiel direkt aus der gerade verwendeten Lib benutzen.

Hast Du mal am Kontrast gedreht?

Gruß Tommy

Hallo,
habs hinbekommen - es hat scheinbar tatsächlich an der Miskommunikation zwischen Lib und Modul gelegen. Mit dem neuen Crystal 1.3.5 hat es auf Anhieb geklappt!
Danke für die Hinweise.
Gruß, Robert