Forum: Mikrocontroller und Digitale Elektronik Probleme mit I2C und LcdDisplay


von Wer B. (Gast)


Lesenswert?

Hallo,

ich habe zurzeit ein Problem mit der Verwendung des I2C Standards im 
Bezug auf ein LcdDisplay.

Ich habe 2 Lcds gekauft (2*16/4*20) und an diese ein I2C Adapter 
angelötet.

Nun habe ich mit einem Sketch und zugehöriger Library versucht diese 
beiden (einzeln) anzusteuern...

Bis auf die Hintergrundbeleuchtung passierte auf den Displays nicht.

Ich frage mich nun wo der Fehler ist, den mit einem I2C Sniffer fand er 
die Adressen der Adapter.

Vielen Dank schonmal im voraus

Simon.Sp

von Karl M. (Gast)


Lesenswert?

Simon,

dann veröffentliche doch bitte ALLES !
Schaltplan, Bilder vom Aufbau und das komplette Programm und deine 
Versuchsergebnisse.

Ich programmiere so etwas selbst und dann weis ich, was ich habe.

von Wer B. (Gast)


Lesenswert?

Karl M. schrieb:
> Simon,
>
> dann veröffentliche doch bitte ALLES !
> Schaltplan, Bilder vom Aufbau und das komplette Programm und deine
> Versuchsergebnisse.
>
> Ich programmiere so etwas selbst und dann weis ich, was ich habe.

Entschuldigung, das habe ich vergessen,mein Fehler.
Bin mit dem Thema Foren noch nicht so vertraut, ist erst mein zweiter 
Beitrag.

Die Daten die du möchtest

Ich kann mit Schaltplan und Foto nicht dienen, jedoch glaube ich auch 
nicht das du/sie dies bei 4 Kabeln benötigen.

Verbindung:
Ich habe...

+5V mit +5V
GND mit GND
SDA mit SDA
SCL mit SCL

verbunden.

Was meinst du mit Versuchsergebnisse ?

PS: Programm folgt in ein paar Minuten

von Wer B. (Gast)


Lesenswert?

Zu dem Display und dem Adapter (von Amazon):

Adapter (2x):IIC/I2C/TWI/SP​​I Serial Interface Board Module Für Arduino 
1602LCD

http://www.amazon.de/Serial-Interface-Module-Arduino-1602LCD/dp/B00LVQ7MH6?ie=UTF8&psc=1&redirect=true&ref_=oh_aui_detailpage_o02_s00

Display: niceeshop(TM) 2004 LCD Modul für Arduino 20x4/Weiß auf Blauer
Schirm Basierend auf Der Beliebten HD44780 Controller

http://www.amazon.de/niceeshop-Arduino-Basierend-Beliebten-Controller/dp/B00MODAKM4?ie=UTF8&psc=1&redirect=true&ref_=oh_aui_detailpage_o00_s00

Display: HD44780 1602 LCD Module Display Anzeigen 2X16 Zeichen

http://www.amazon.de/HD44780-Module-Display-Anzeigen-Zeichen/dp/B009GEPZRE/ref=pd_bxgy_23_2?ie=UTF8&refRID=0TWCHV94EKQTAM07AK5Q

von Wer B. (Gast)


Lesenswert?

Zum Thema Schaltplan usw.

Ich habe das ganze nach einer Anleitung aus dem Internet gemacht 
(Funduino).

http://funduino.de/index.php/3-programmieren/sketch-nr-20-lcd-mit-i2c

Dort findest du auch Sketch, Fotos, ...

Wegen der Versuchsergebnisse: Ich habe mal einen I2C Sniffer 
ausprobiert, da ich mir wegen der Adressen nicht sicher war (s. Amazon 
Kommentare zum Adapter) und bei dem einem Adapter war es 0x27 und bei 
dem anderen 0x3F.

Geht trotzdem nicht, bis auf die Steuerung der Hintergrundbeleuchtung

von Nixnax (Gast)


Lesenswert?

Hallo,

hast Du die Lötbrücken für die Adressen entsprechend Deiner angegebenen 
Adressen verbunden?

von aSma>> (Gast)


Angehängte Dateien:

Lesenswert?

Servus,

Simon S. schrieb:
> Bis auf die Hintergrundbeleuchtung passierte auf den Displays nicht.

Es kann an etwas ganz banalen liegen, wie die Kontrastspannung.

Wenn man den 4x20 initialisiert sieht man, dass anstatt 1&3 Zeile alle 4 
Zeilen leuchten. Dann drehe mal am Poti u stelle den Kontrast ein.

Sonst setze mal beim PCF8574 alle Pins auf ON und messe mit einen 
Messgerät die Spannungen an den richtigen Pins des hd44780. Kannst auch 
einzeln machen.

Wenn du das Backlight an und aus machen kannst, dann sind die anderen 
Pins falsch konfiguriert oder Kontrastspannung ist ungüngstig.

von Wer B. (Gast)


Lesenswert?

Nixnax schrieb:
> Hallo,
>
> hast Du die Lötbrücken für die Adressen entsprechend Deiner angegebenen
> Adressen verbunden?

??? :D

Ich habe den Adapter einfach nur drangelötet, mehr nicht.

Was meinst du mit Lötbrücken ?

von Wer B. (Gast)


Lesenswert?

aSma>> schrieb:
> Servus,
>
> Simon S. schrieb:
>> Bis auf die Hintergrundbeleuchtung passierte auf den Displays nicht.
>
> Es kann an etwas ganz banalen liegen, wie die Kontrastspannung.
>
> Wenn man den 4x20 initialisiert sieht man, dass anstatt 1&3 Zeile alle 4
> Zeilen leuchten. Dann drehe mal am Poti u stelle den Kontrast ein.
>
> Sonst setze mal beim PCF8574 alle Pins auf ON und messe mit einen
> Messgerät die Spannungen an den richtigen Pins des hd44780. Kannst auch
> einzeln machen.
>
> Wenn du das Backlight an und aus machen kannst, dann sind die anderen
> Pins falsch konfiguriert oder Kontrastspannung ist ungüngstig.

1. Deine Antwort entnehme ich, dass ich mit einem Poti den Kontrast mal 
verändern soll, ob die Buchstaben verdeckt werden, oder?

2. Was meinst du mit alle Pins auf ON schreiben ?
Die sind ja über I2C angeschlossen, da ist ja nichts mit digitalWrite(x, 
HIGH);

3."Spannung messen an den richtigen Pins". Meinst du ob die 
Stromversorgung stabil ist und ausreicht ?

PS: Ich hab die Display leider nicht bei mir, sind gerade bei einem 
Kollegen der die ausprobieren will.

von aSma>> (Gast)


Lesenswert?

Simon S. schrieb:
> Was meinst du mit Lötbrücken ?

Auf der Vorderseite steht: A2 A1 A0. Durch eine Lötbrücke kannst du 
entscheiden, welchen Zustand herrscht.

Wenn du aber sagst:

Simon S. schrieb:
> Ich frage mich nun wo der Fehler ist, den mit einem I2C Sniffer fand er
> die Adressen der Adapter.

Dann wird ja die Slave Addresse angesprochen?!

von Wer B. (Gast)


Lesenswert?

aSma>> schrieb:
> Simon S. schrieb:
>> Was meinst du mit Lötbrücken ?
>
> Auf der Vorderseite steht: A2 A1 A0. Durch eine Lötbrücke kannst du
> entscheiden, welchen Zustand herrscht.
>
> Wenn du aber sagst:
>
> Simon S. schrieb:
>> Ich frage mich nun wo der Fehler ist, den mit einem I2C Sniffer fand er
>> die Adressen der Adapter.
>
> Dann wird ja die Slave Addresse angesprochen?!

Also er sagte bei dem einen 0x27 und dem anderen 0x3F.

Ich kenn mich damit nicht so gut aus, aber in der Produktbeschreibung 
und den Kommentaren/Rezessionen stand nichts von selber löten/verbinden.

Danke schonmal für deine Hilfe

von aSma>> (Gast)


Lesenswert?

Simon S. schrieb:
> 1. Deine Antwort entnehme ich, dass ich mit einem Poti den Kontrast mal
> verändern soll, ob die Buchstaben verdeckt werden, oder?

Ja.

> 2. Was meinst du mit alle Pins auf ON schreiben ?
> Die sind ja über I2C angeschlossen, da ist ja nichts mit digitalWrite(x,
> HIGH);

Ich kenne die arduino libs nicht. Ich programmiere noch selber. Aber das 
geht so (bitte die richtigen Funktionen selber raussuche) Pseudocode:
1
i2c_write(0x27, 0xff)
damit sagst du, dass lcd addr 0x27 soll alle Pins auf on stellen oder
1
i2c_write(0x27, 0x00)
alle Pins auf Off setzen.

Nacheinander kompilieren und mit einen Messgerät messen, ob die Pins vom 
PCF8574 richtig verbunden sind. Du kannst es auch einzeln machen:
1
i2c_write(0x27, 0x01)
 ==> RS Pin ist high
1
i2c_write(0x27, 0x04)
 ==> En Pin ist high

> 3."Spannung messen an den richtigen Pins". Meinst du ob die
> Stromversorgung stabil ist und ausreicht ?
Nein. Die Ausgänge vom PCF8574.

von Wer B. (Gast)


Lesenswert?

>> 3."Spannung messen an den richtigen Pins". Meinst du ob die
>> Stromversorgung stabil ist und ausreicht ?
> Nein. Die Ausgänge vom PCF8574.

SDA und SCL oder die Pins die mit dem Display verbunden sind ?

Noch eine Frag/Idee/Info:

Im Internet stand man soll schreiben:
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Nur...
Bei mir kommt dann ein Error, das ich "POSITIVE" nicht schreiben darf 
oder so ähnlich.

Zitat Amazon Kundenrezession:

>Probleme waren:
>Obwohl keine Brücken für die Adressen eingelötet sind, ist Adresse0x27 
>(nicht wie geschrieben 0x20)

... (hä) ?

von aSma>> (Gast)


Lesenswert?

Simon S. schrieb:
> Ich kenn mich damit nicht so gut aus, aber in der Produktbeschreibung
> und den Kommentaren/Rezessionen stand nichts von selber löten/verbinden.

Man muss etwas Verständnis für den i2c Bus mitbringen. Der Master 
spricht den slave an. Hier: 0b0100_A2_A1_A0_RW. Wenn A2=A1=A0 dann:
slave= 0b0100111_RW entspricht 0x27 und je nachdem müsste man noch 
(0x27<<1) machen.

Jetzt bist du aber ganz verwirrt. Stell dir vor du hast 2 gleiche 
Sklaven. Die willst du ja unterscheiden können...

Wenn du das Backlight ansprechen kannst. Mit pseudocode
1
 
2
i2c_backlightON();
3
delay(1000)
4
i2c_backlightOFF();

dann wird der slave richtig angesprochen.

Amen.

von Wer B. (Gast)


Lesenswert?

> Nacheinander kompilieren und mit einen Messgerät messen, ob die Pins vom
> PCF8574 richtig verbunden sind.

Meinst du ob ich den Adapter falsch angelötet habe ?
(Lötstelle nicht gut gelötet sind ?)

Kann sein, glaube ich aber nicht da die gut aussahen und dann bei beiden 
schlecht gelötet, aber sobald ich die wiederhabe überprüfe ich das 
natürlich.

von Jan L. (ranzcopter)


Lesenswert?

Simon S. schrieb:
> Ich habe das ganze nach einer Anleitung aus dem Internet gemacht
> (Funduino).
>
> http://funduino.de/index.php/3-programmieren/sketch-nr-20-lcd-mit-i2c

- es gibt verschiedene dieser I2C-Module; nicht jedes funktioniert mit 
jeder Lib => welche ist hier überhaupt im Einsatz?

- probier' das LCD mit dem Modul an der Adresse 0x27 mal mit genau 
dieser Lib: 
https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

- davon, dass das I2C-Modul "richtig rum" am LCD angeschlossen ist, kann 
man ausgehen?

: Bearbeitet durch User
von Wer B. (Gast)


Lesenswert?

> Jetzt bist du aber ganz verwirrt. Stell dir vor du hast 2 gleiche
> Sklaven. Die willst du ja unterscheiden können...
>
> Wenn du das Backlight ansprechen kannst. Mit pseudocode
>
1
> i2c_backlightON();
2
> delay(1000)
3
> i2c_backlightOFF();
4
>
>
> dann wird der slave richtig angesprochen.
>
> Amen.

Halbwegs komm ich mit.
Zu der Hintergrundbeleuchtung:

Ich weiß nicht wie, aber mit einer Library musste man/war im Beispiel 
Sketch was mit der Hintergrundbeleuchtung, also Str.+C und Str.+V und 
das Licht ließ sich schonmal anmachen/bzw. ging manchmal auch wieder 
aus.

Also nicht dauerhaft an wie "ohne Sketch"

Zu deiner "Formel"/"Berechnung" von oben: (:D)

Könntest du das vll. zusammenfassen, also "einfach nur sagen was in den 
Sketch kommt".

Das soll jz nicht so wirken als will ich nur die fertige Lösung, nur da 
komme ich nicht mit.

von Wer B. (Gast)


Lesenswert?

> - davon, dass das I2C-Modul "richtig rum" am LCD angeschlossen ist, kann
> man ausgehen?

Wenn richtig rum heißt das die Anschlüsse wie auf "allen" Bildern oben 
links am Bildschirm sind und nach außen zeigen (wie auf dem Bild auf 
Funduino).

Dann ja.

von aSma>> (Gast)


Lesenswert?

Simon S. schrieb:
> Im Internet stand man soll schreiben:
> LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
>
> Nur...
> Bei mir kommt dann ein Error, das ich "POSITIVE" nicht schreiben darf
> oder so ähnlich.

https://arduino-info.wikispaces.com/LCD-Blue-I2C

So mehr Hilfe gibt es nicht!

von Wer B. (Gast)


Lesenswert?

> - es gibt verschiedene dieser I2C-Module; nicht jedes funktioniert mit
> jeder Lib => welche ist hier überhaupt im Einsatz?

http://www.amazon.de/Serial-Interface-Module-Arduino-1602LCD/dp/B00LVQ7MH6?ie=UTF8&psc=1&redirect=true&ref_=oh_aui_detailpage_o02_s00

von aSma>> (Gast)


Lesenswert?

aSma>> schrieb:
> A2=A1=A0

Hier habe ich A2=A1=A0=1 vergessen.

Mit POSITIVE stellst du NUR die Polarität des Backlights ein, dh
Wenn pol = NEGATIVE dann kann sein, dass:
backlightOFF() ==> Hintergrundlicht ist AN usw. ist.

Kein schwierige Sache.

von Wer B. (Gast)


Lesenswert?

aSma>> schrieb:
> aSma>> schrieb:
>> A2=A1=A0
>
> Hier habe ich A2=A1=A0=1 vergessen.
>
> Mit POSITIVE stellst du NUR die Polarität des Backlights ein, dh
> Wenn pol = NEGATIVE dann kann sein, dass:
> backlightOFF() ==> Hintergrundlicht ist AN usw. ist.
>
> Kein schwierige Sache.

>Keine schwierige Sache
Es wird bei mir ja nicht akzeptiert POSITIVE oder NEGATIVE zu schreiben.

von Wer B. (Gast)


Lesenswert?

Korrektur:

Alle Libarys gelöscht und die I2C Library neu installiert...
Jz geht es :)

von Wer B. (Gast)


Lesenswert?

Wegen der Lötbrücken nochmal...

Muss ich da jz etwas verändern ?

von Jan L. (ranzcopter)


Lesenswert?

Simon S. schrieb:
>> - es gibt verschiedene dieser I2C-Module; nicht jedes funktioniert mit
>> jeder Lib => welche ist hier überhaupt im Einsatz?
>
> 
http://www.amazon.de/Serial-Interface-Module-Arduino-1602LCD/dp/B00LVQ7MH6?ie=UTF8&psc=1&redirect=true&ref_=oh_aui_detailpage_o02_s00

die Frage war "welche Library benutzt du"...

wie gesagt, die Lib die ich genannt hatte, sollte zumindest mit dem 
Modul an 0x27 funktionieren; nicht speziell wegen der Adresse, sondern 
weil nach meiner Erfahrung I2C-Module mit dem Default 0x27 bislang mit 
der genannten Lib ohne Verrenkungen taten.
Zumindest kannst du damit testen, ob die Dinger grundsätzlich 
funktionieren, und dann ggf. mit deiner eigenen Lib weiter machen...

von Jan L. (ranzcopter)


Lesenswert?

Simon S. schrieb:
> Wegen der Lötbrücken nochmal...
>
> Muss ich da jz etwas verändern ?

Quark. Deine Module werden per I2C gefunden, und offenbar sogar beide an 
unterschiedlichen Adressen, d.h. du kannst beide Module auch an einen 
I2C (einen Arduiono) anschliessen.
Wären beide Module z.B. auf 0x27 gewesen, wäre das nicht möglich, ohne 
eines der beiden per Lötbrücke auf eine andere Adresse zu setzen.

von Wer B. (Gast)


Lesenswert?

Ich benutze die Library, die auf dieser Seite genutzt wird:

https://arduino-info.wikispaces.com/LCD-Blue-I2C

Ich glaube ich habe schon den Fehler gefunden mit dem POSITIVE-Problem:
Es gab ein Problem mit der Standard Library, die vorinstalliert ist.

Diese kannte POSTIIVE nicht, es wurde trzdm. auf diese zurückgegriffen.

von Wer B. (Gast)


Lesenswert?

> https://arduino-info.wikispaces.com/LCD-Blue-I2C
>
> So mehr Hilfe gibt es nicht!

Danke, das war glaube ich der hilfsreicheste Tipp, was nicht heissen 
soll, das alle anderen nicht gut waren.

Ich freue mich über dieses große Hilfsangebot und bedanke mich herlichst 
bei allen.

Ich melde mich spätestens Montag wieder, denn da habe ich meine Displays 
wieder und kann weiter "experimentieren".

Vielen Dank

Gruß an alle
Simon.Sp

von aSma>> (Gast)


Angehängte Dateien:

Lesenswert?

Es läuft....

Bei mir und bei dir? :D

von Wer B. (Gast)


Lesenswert?

Es tut mir leid für die Verspätung.

Wie versprochen werde ich nochmal einen Status abgeben, wenn ich die 
LCDs wieder habe.

Sie gehen jetzt... :)

Problem war:

Falsche Library
Potentiometer defekt (LCD1)
Potentiometer falsch justiert (LCD2).

Hilfreichster Tipp/Antwort:

Autor:  aSma>> (Gast)
Datum: 31.03.2016 13:47

>>Simon S. schrieb:
>> Im Internet stand man soll schreiben:
>> LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
>>
>> Nur...
>> Bei mir kommt dann ein Error, das ich "POSITIVE" nicht schreiben darf
>> oder so ähnlich.
>
>https://arduino-info.wikispaces.com/LCD-Blue-I2C
>
>So mehr Hilfe gibt es nicht!

Vielen Dank nochmal an alle.

Simon Spettmann

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
Noch kein Account? Hier anmelden.