Probleme I2C (PCF8574AT) an LCD 2004A (HD44780)

Hallo,

ich habe mir das oben genannte Display + I2C Set geholt und wollte es an meinen Uno klemmen.
Angeklemmt wie sonst üblich:

A4 - SDA
A5 - SCL

Diesen Code benutzt:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
 
// set the LCD address to 0x3F for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 
 
 
void setup()
{
  lcd.begin(20,4);               // initialize the lcd for 20 chars 4 lines
 
  lcd.setCursor ( 0, 0 );
  lcd.print("SainSmart 2004 LCD");  
  lcd.setCursor ( 0, 1 );        // go to the next line
  lcd.print ("I2C - 20x4");     
  lcd.setCursor ( 0, 2 );        // go to the next line
  lcd.print ("Arduino");   
  lcd.setCursor ( 0, 3 );        // go to the next line
  lcd.print ("www.JHRweb.de");    
}
 
void loop()
{
 
}

(von Arduino: SainSmart IIC/I2C/TWI Serial 2004 20×4 LCD Module Shield | JHRweb)

Beleuchtung und co. funktioniert, doch anscheinend werden nur die letzten 4 Bits übertragen. Auf dem Bildschirm werden abhängig vom Text immer folgende Zeichen dargestellt: O, o, /, _, ?, ←. Praktisch alles nur Zeichen der Form “xxxx1111”.

Wo könnte ich anfangen nach dem Fehler zu suchen?

Eine schlechte Lötstelle zwischen dem Display und I2C-Adapter.

Habe mal komplett neu gelötet; selbes Ergebnis.

Dann vermute ich einen defekt am Display oder Adapter.

Das Display könntest du einzeln (Adapter ablöten) prüfen, wenn du es "parallel" anschließt.

Eine andere Idee habe ich leider nicht.

Edit:
Oder doch...welche Library setzt du ein ? Bitte Link posten.

https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/
Die 1.3.4 von fmalpartida.

minske:
https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/
Die 1.3.4 von fmalpartida.

Ok, dass ist die richtige...die verwende ich auch.

Ich habe mal durchgetestet, was wo durchkommt... D0-D3 kommt nichts durch... Dann vermutlich der Chip defekt. :confused:

Du kannst auch mal eine andere I2C LCD Library probieren. Da gibt es einige

Ich kann diese hier empfehlen: GitHub - johnrickman/LiquidCrystal_I2C: LiquidCrystal Arduino library for the DFRobot I2C LCD displays
Die habe ich bei mir sowohl mit einem 16x2 als auch mit einem 20x4 I2C-Display am laufen.

minske:
Ich habe mal durchgetestet, was wo durchkommt... D0-D3 kommt nichts durch... Dann vermutlich der Chip defekt. :confused:

Diese Adapter sind ja nicht sehr teuer, nur umständlich, die wieder zu entfernen.
Wie hast du es getestet ?
Ich hoffe mit Oszi.

slartibartfast:
Ich kann diese hier empfehlen: GitHub - johnrickman/LiquidCrystal_I2C: LiquidCrystal Arduino library for the DFRobot I2C LCD displays
Die habe ich bei mir sowohl mit einem 16x2 als auch mit einem 20x4 I2C-Display am laufen.

Sorry, aber Empfehlungen anderer Libraries sind ok, nützen hier aber wenig.

Ich setze diese hier verwendete auch ein und funktioniert prima.

Bei einer anderen Library muss auch die Pin-Definition geändert werden.

Mein Post wurde anscheinend nicht gepostet?

Eh ja, also:
Mit einem günstigen kleinen Oszi getestet.

Andere Libraries habe ich getestet, doch konnte ich den LCD nicht ansprechen damit (und natürlich entsprechenden Test-Sketches).

Andere Frage:
Wie finde ich die Pins raus? Also die in "LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE)"?

minske:
Mein Post wurde anscheinend nicht gepostet?

Eh ja, also:
Mit einem günstigen kleinen Oszi getestet.

Andere Libraries habe ich getestet, doch konnte ich den LCD nicht ansprechen damit (und natürlich entsprechenden Test-Sketches).

Andere Frage:
Wie finde ich die Pins raus? Also die in "LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE)"?

Wenn du das LCD nicht ansprechen kannst, liegt es evtl. an einer falschen I2C-Adresse. Viele Beispiele verwenden eine andere Adresse (0x27).

Das mit den Pins musst du dir anhand eines Schaltbildes des Adapters heraussuchen.

Gut, einen Schaltplan habe ich nicht. Habe aber D4, D5 und RW auf der Platine zum Chip verfolgen können, sodass die oben genannten Werte übereinstimmen.

D.h. bleibt wohl nichts anderes übrig, als den Händler anzuschreiben.

Danke an alle!

minske:
Ich habe mal durchgetestet, was wo durchkommt... D0-D3 kommt nichts durch... Dann vermutlich der Chip defekt. :confused:

Das ist normal, da das Display im 4-Bit Modus angesprochen wird.Siehe auch in der Pinbelegung:

//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Da kommt D0-D3 nicht vor.

Evtl. kannst Du 'durchklingeln' ob dein 8574A auch entsprechend dieser Bitzuordnung an deinem Display angeschlossen ist.

MicroBahner:
Das ist normal, da das Display im 4-Bit Modus angesprochen wird.Siehe auch in der Pinbelegung:

//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol

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


Da kommt D0-D3 nicht vor.

Stimmt genau. Da habe ich nicht aufgepasst und einfach überlesen. :wink:

2 Möglichkeiten warum es nicht läuft.
https://www.mikrocontroller.net/articles/Port-Expander_PCF8574
LCDpin EN kommt an PCFpin P2
LCDpin RW kommt an PCFpin P1
usw usf
Wenn du es anders angeklemmt hast, musste dann im Sketch die Pins ändern.

Keine Pull widerstände.

Wenn du aber das I2C Modul hast, dann schau hier rein.
Adresse ist dann da standardmäßig 0x27 ansonsten schau hier.

skorpi080:
Wenn du aber das I2C Modul hast, dann schau hier rein.
Adresse ist dann da standardmäßig 0x27 ansonsten schau hier.

Sag mal skorpi080, warum postest du immer diese kaputten Links.
Bei einigen deiner letzten Links ist mir das aufgefallen. Die funktionieren nicht und müssen immer überarbeitet werden.

Da passt skorpi08 im URL-Fenster nicht auf und ersetzt nicht den kompletten Vorgabeeintrag. Das passiert hier im Forum öfter, wenn man nicht aufspasst (wobei ich das auch als eine blöde Voreinstellung der Admins ansehe)

Gruß Tommy

Tommy56:
Da passt skorpi08 im URL-Fenster nicht auf und ersetzt nicht den kompletten Vorgabeeintrag. Das passiert hier im Forum öfter, wenn man nicht auspasst (wobei ich das auch als eine blöde Voreinstellung der Admins ansehe)

Gruß Tommy

Achso....also skorpi080, besser aufpassen. :wink: :wink: