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
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.
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
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
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.
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 ?
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.
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?!
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
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.
>> 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ä) ?
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
> 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.
> 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.
> - 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.
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!
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.
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.
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...
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.
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.
> 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
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