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
Zu dem Display und dem Adapter (von Amazon): Adapter (2x):IIC/I2C/TWI/SPI 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
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
Hallo, hast Du die Lötbrücken für die Adressen entsprechend Deiner angegebenen Adressen verbunden?
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
1 | |
2 | i2c_backlightON(); |
3 | delay(1000) |
4 | i2c_backlightOFF(); |
dann wird der slave richtig angesprochen. Amen.
> 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.
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
> 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!
> - 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
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.
Korrektur: Alle Libarys gelöscht und die I2C Library neu installiert... Jz geht es :)
Wegen der Lötbrücken nochmal... Muss ich da jz etwas verändern ?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.