Wie kann man feststellen, ob ein OLED Display mit I2C-Bus defekt ist ? Oder liegt es an der Programmierung ? Richtige Adresse ist eingestellt. Da zuckt nichts.
Manfred M. schrieb: > Wie kann man feststellen, ob ein OLED Display mit I2C-Bus defekt ist ? Indem man es benutzt. Vorzugsweise mit einem Mikrocontroller und Programm, das nachweislich und überprüfbar in Ordnung ist. > Oder liegt es an der Programmierung ? Was liegt an der Programmierung?
Habe einen ESP mit der Arduino-IDE programmiert und auch die richtigen Bibliotheken installiert. Kompiler hat nichts beanstandet. Genau so wie bei AZ-Delivery angegeben. Ich dachte dabei an Möglichkeiten zum Messen.
hast du nur ein Display? Ich bestelle derlei immer mindestens doppelt weil ein Display ist kein Display, bekam schon zu oft Schrott und konnte nicht prüfen Display oder mein Fehler. Auch bekam ich welche mit anderen Controllern so das die Beispiel Programmierung nicht funktionierte, mit Glück gibt es mehrere Möglichkeiten in der LIB so das man alle durchprobieren kann. Manchmal fehlt auch nur der R oder ist falsch bestückt das nicht I2C aktiv ist sondern SPI. Und dann wieder die 3,3V zu 5V Problematik, auch mal mit Pegelwandler versucht?
:
Bearbeitet durch User
Manfred M. schrieb: > Ich dachte dabei an Möglichkeiten zum Messen. Ist die Frage wirklich ernst gemeint? Ich geh' mal davon aus... Messen: - Spannungen OK? Je nach OLED Typ brauchst Du ggf. zwei unterschiedliche Spannungen, z.B. 3.3V und 12V. Das Datenblatt verrät Dir mehr. - I2C Bus in Ordnung? Takt gemessen? SDA und SCL plausibel? Pegel in Ordnung? Damit man Dir helfen kann, braucht man hier mindestens mal die Bezeichnung des Displays und den Programmcode, mit dem Du das Display initialisierst sowie den Code, mit dem Du "Hallo Welt" auf das Display schreiben willst... Sonst wird das nix.
Läuft alles mit 3,3V. Habe bereits ein neues Display bestellt. Bin noch beim Einarbeiten, da ich bisher nur Grundkenntnisse habe. Versuche das ich alles alleine hin bekomme, nehme Hilfe vom Internet mit Übersetzer in Anspruch. Stures Abschreiben will ich nicht, ich will verstehen welchen Mist ich baue. Dann kann ich es besser machen.
I2C Bus scheint i.O. zu sein, da ich den Temp.Fühler auslesen kann. Kann ich über die Arduino-IDE anzeigen lassen. Da war der nächste Schritt die Anzeige am Display. Wenn das neue Display kommt gehts weiter. Oszi habe ich nur einen Eigenbau bis etwa 5 MHz.
Manfred M. schrieb: > Habe bereits ein neues Display bestellt EIN? also nicht verstanden? Joachim B. schrieb: > Ich bestelle derlei immer mindestens doppelt weil ein Display ist kein > Display auch sieht man das es je nach Bestückung auch SPI sein kann
:
Bearbeitet durch User
Welches OLED / welcher Chip ? Zur Not auch ein Foto vom Display oder ein Verweis zu AZ-Delivery. Was sagt der I2C Scanner ? Die OLED sind unter Arduino leicht zu handeln. Man muss allerdings auf den Chip und daher auch auf die richtige Library und Anschluss achten. Bei AZ-Delivery gibts es welche mit SSD1306 und SSH1106. Ich vermeide zu viele Librarys - bei mir laufen die OLEDs mit der Library von "olikraus" Eine einzige Library für unzählige Displays: https://github.com/olikraus/u8g2 Ein Beispiel von Dir - das übliche "Hello World" wäre auch nicht schlecht.
Andreas S. schrieb: > Eine einzige Library für unzählige Displays: > > https://github.com/olikraus/u8g2 Schrecklich .... diese vielen ASCII Zeichen .... ... und diese vielen Sourcen ...
Ein gerne gemachter Fehler sind fehlende Pull-up-Widerstände. Wie hast Du das Display denn angeschlossen?
Habe folgende bestellt :0,96 Zoll OLED Display I2C SDD1306 128x64 und 3Stück bereits gestern. Wie schon gesagt stehe ich erst am Anfang. Habe jetzt als Rentner mehr Freizeit zur Verfügung. Ich werde dann mir alle Hinweise ansehen. Beispiele nehme ich meist von AZ-Delivery , weil weniger englisch dabei ist. Und ich suche auf deutsch-sprachigen Seiten. In den nächsten Tagen mache ich dann weiter. Danke Euch allen für die Hilfe.
Manfred M. schrieb: > Habe folgende bestellt :0,96 Zoll OLED Display I2C SDD1306 128x64 von wo mit Link hast du immer noch nicht geschrieben, aber egal offensichtlich wurde dir ein Manfred M. schrieb: > SDD1306 angeboten, aber wie ich auch schon erfahren musste, manchmal ist auch ein Andreas S. schrieb: > SSH1106 drin, manche Verkäufer wissen noch nicht mal was wirklich drin ist, deswegen eine LIB suchen die beides beinhaltet zum Probieren. https://github.com/olikraus/u8g2
:
Bearbeitet durch User
Manfred M. schrieb: > Kompiler hat nichts beanstandet Ein Compiler kann eine SYNTAKTISCHE (grammatikalische) Prüfung einer Programmiersprache vornehmen, und schauen ob Variablen definiert und initialisiert sind. eine SEMANTISCHE (inhalt, Bedeutung) Prüfung kann der Compiler nicht vornehmen. Der folgende Satz einer natürlichen Sprache ist syntaktisch vollkommen korrekt: "Der Hund hat gestern ein Fugzeug gefressen" Sematisch ist dieser Satz Unsinn. Ein Compiler KANN ihn nicht anmeckern, da er das Modell der "Wirklichkeit" nicht kennt und nicht überprüft.Der Compiler kann es einfach nicht wissen, ob der Hund gestern das Flugzeug gefressen hat, noch ob Hunde generell Flugzeuge fressen. --> deine Annahme, das ein Programm "korrekt" ist, nur weil ein Compiler nichts beanstandet, ist irrig. FALLS Der Compiler meckert, weil die Syntax nicht stimmt (das ist für Maschinen-Übersetzer=Compiler eine zwingende Voraussetzung), dann ist erst mal im Vorfeld was im argen. "nochmal nachdenken du musst". -> die Syntax ist etwas verhuddelt, aber die Semantik ist wohl eher zutreffend. Ein Compiler würde an der Syntax scheitern. Ein menschlicher Übersetzer kann den Syntax-Fehler ausblenden, und sich der Semantik zuwenden und diese bewerten.
:
Bearbeitet durch User
Manfred M. schrieb: > Habe einen ESP mit der Arduino-IDE programmiert und auch die richtigen > Bibliotheken installiert. Das heißt nicht viel. Für diese Displays gibt es viele unterschiedliche Bibliotheken mit unterschiedlicher Qualität. Und es gibt unterschiedliche Display-Module. > Genau so wie bei AZ-Delivery angegeben. Ich habe ein ESP8266 Board von AZ-Delivery verwendet, wo so ein Display fest drauf ist. Obwohl ich mich exakt an deren Anleitung hielt, funktionierte es nicht. Ursache war, das die Platine nicht dem Schaltplan entsprach und die Library nicht dazu passte. Hohmann schrieb: > Damit man Dir helfen kann, braucht man hier mindestens mal die > Bezeichnung des Displays und den Programmcode, mit dem Du das Display > initialisierst sowie den Code, mit dem Du "Hallo Welt" auf das Display > schreiben willst... > > Sonst wird das nix. Ja, volle Zustimmung > Habe folgende bestellt :0,96 Zoll OLED Display I2C SDD1306 128x64 Das ist nicht eindeutig. Guck Dir mal die Fotos von Joachim an! Besorge Dir einen "8CH Logic Analyzer", damit kannst du die I²C Kommunikation überprüfen.
> Oder liegt es an der Programmierung ? Richtige Adresse ist eingestellt. > Da zuckt nichts. Das Problem wenn die Expertise nur noch aus kopieren und abschreiben besteht und sich keiner mehr mit den Grundlagen beschaeftigt besteht darin das man sich niemals Gedanken macht wofuer wohl ACK beim I2C wohl gedacht war... http://www.ti.com/lit/an/slva704/slva704.pdf (2.3 verstehen) Ihr muesst also nur eure coolen Oszis benutzen und einmal auf den Bus kucken... Olaf
Hallo Olaf, schaue mal, was ich bisher alles geschrieben habe. Das siehst du meine vorläufigen Grenzen. Wenn man das gelernt hat oder beruflich damit zu tun hat, ist es natürlich leicht, solche Aussagen zu treffe. Ich bin KEIN Profi. Manfred M.
> Wenn man das gelernt hat oder beruflich damit zu tun hat, ist es natürlich > leicht, solche Aussagen zu treffe. Ich bin KEIN Profi. Als ich damals den PCF8574 in MCS48 Assembler programmiert habe war ich 16J und auch noch kein Profi. Ich hab nur das Datenblatt gelesen. Liess dir den Link durch den ich mitgeschickt habe. Danach sollte dir klar sein wie I2C funktioniert. Dann schaust du dir an ob du SCK und SDA so auf dem Bus wieder findest. Und dann schaust du nach ob dein Display bei einem Befehl ACK richtig setzt, es also mit seiner richtigen Adresse angesprochen wird. Solltest du kein Oszi haben, normales I2C kann beliebig langsam sein. Also gerne auch 1Bit in 10s. Das kann man notfalls auch mit dem Multimeter sehen. Wenn du dir sorgen machst die I2C-Hardware in deinem Mikrocontroller zu verstehen, sowas kann bei modernen Controllern manchmal verwirrend sein, das kann man in wenigen Zeilen Code komplett von Hand programmieren. Olaf
Danke Olaf für die Info. Ich habe damals nur die Grundlagen von Basic gelernt und mal mit dem C64 probiert. Sonst habe ich nur Hardware von ESER repariert. Für die Software hatten wir Spezialisten. Kann ich den I2C Bus beim Arduino beeinflussen ? Assembler kann ich nicht und werde es sicher auch nicht mehr lernen. Ich kann nur etwas Basic und C .
Manfred M. schrieb: > Danke Olaf für die Info. Du laberst nur herum! Fange klein an. Du hast es vermutlich überlesen, aber das ist der erste Schritt (du brauchst dazu keine Messgeräte): Andreas S. schrieb: > Was sagt der I2C Scanner ? Das ist ein eigenes Testprogramm für I2C. Hier z.B.: https://playground.arduino.cc/Main/I2cScanner/ Zitat: ------------------------------------------------------------------- This very simple sketch scans the I2C-bus for devices. If a device is found, it is reported to the Arduino serial monitor. This sketch is the first step to get the I2C communication working. ------------------------------------------------------------------- Man beachte vor allem den letzten Satz.
Manfred M. schrieb: > Guten Morgen, habe diesen Typ bestellt Habe ich auch einige von im Einsatz. Sehen exakt so aus. Auch an ESP. Der I2C Scanner findet sie an Adresse 0x3c, und so müssen sie dann auch benutzt werden. 10K Pullup sind schon drauf. Ob das reicht/zuviel ist, zeigt das Osszi Bisher keine Probleme mit. Außer, dass sie fürchterlich schnell "einbrennen".
Suche mal im Web nach "Hallo World" Beispiele. Diese sind erprobt und zeigen auch bei intakten Display etwas auf dem OLED an. Die verwendete Library ist erst einmal egal - Du willst ja nur Dein Display testen. Ein Beispiel : http://blog.simtronyx.de/ein-096-zoll-oled-display-i%C2%B2c-mit-128x64-pixel-und-ein-arduino/
Manfred M. schrieb: > Wie kann man feststellen, ob ein OLED Display mit I2C-Bus defekt ist ? > Oder liegt es an der Programmierung ? Richtige Adresse ist eingestellt. > Da zuckt nichts. 1. Schritt: Schaun ob die serielle Kommunikation funktioniert, z.B. mit Timeouts arbeiten und sich hier eine Controll-Variable basteln deren Wert man visualisieren kann. So hab ich das gelöst und weiß somit schonmal, ob zumindest die Kommunikation funktioniert und das Display auch antwortet. 2. Schritt: Datenblatt des Displays studieren ;)
Arduino Fanboy D. schrieb: > Der I2C Scanner findet sie an Adresse 0x3c, und so müssen sie dann auch > benutzt werden. Sehr gut. Die Aufgedruckte Adresse 0x78 ist offenbar um ein Bit verschoben. Hier muss man aufpassen, welche Bibliothek man verwendet. Manche wollen den Input genau so verschoben haben (als 8bit 0x78) und manche wollen den Input nicht verschoben haben (als 7bit 0x3C).
Servus, ich hab ein 128x32 I2C OLED an einem Arduino Due. 3V3 GND SDA SCL 7 bit Adresse 0x3C
1 | #include <Wire.h> |
2 | #include <Adafruit_GFX.h> |
3 | #include <Adafruit_SSD1306.h> |
4 | |
5 | #define SCREEN_WIDTH 128 // OLED display width, in pixels
|
6 | #define SCREEN_HEIGHT 32 // OLED display height, in pixels
|
7 | |
8 | #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
|
9 | Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); |
10 | |
11 | void setup() { |
12 | // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
|
13 | if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { |
14 | Serial.println(F("SSD1306 allocation failed")); |
15 | for(;;); // Don't proceed, loop forever |
16 | }
|
17 | |
18 | display.clearDisplay(); // Clear the buffer |
19 | display.display(); // buffer 2 Display |
20 | }
|
21 | |
22 | void loop() { |
23 | display.setTextSize(1); |
24 | display.setTextColor(SSD1306_WHITE); |
25 | display.setCursor(0, 0); |
26 | display.println("Hallo Welt"); |
27 | display.display(); |
28 | }
|
Stefan ⛄ F. schrieb: > Die Aufgedruckte Adresse 0x78 ist offenbar um ein Bit verschoben. So ist es. Das R/W Bit wird als Teil der Adresse betrachtet. Stefan ⛄ F. schrieb: > Hier muss man aufpassen, welche Bibliothek man verwendet. Hier gibts zum Glück in der Arduinowelt die Einigung, das R/W Bit nicht zur Adresse zu zählen. Es ist also recht egal, welche Library man verwendet, sofern sie auf Wire basiert, nutzt sie auch das Arduino Addressierungsschemata.
Arduino Fanboy D. schrieb: > Hier gibts zum Glück in der Arduinowelt die Einigung, das R/W Bit nicht > zur Adresse zu zählen. Gut zu wissen. Ich finde diese Design-Entscheidung vernünftig.
Stefan ⛄ F. schrieb: > Die Aufgedruckte Adresse 0x78 ist offenbar um ein Bit verschoben. Das ist ja auch völlig richtig. Man kann diese Displays nicht lesen sondern nur schreiben, deshalb ist nur die eine 8-bit-Adresse bei den OLEDs interessant. (R/W-Bit = 0 => Writemode) ;) Arduino Fanboy D. schrieb: > Hier gibts zum Glück in der Arduinowelt die Einigung, das R/W Bit nicht > zur Adresse zu zählen. So hab ich meine Lib auch aufgebaut was aber mehr mit meiner I2C-Lib zu tun hat, ich steuer damit nicht nur OLEDs an und ich denke die in der Arduino-Welt verwendete Lib für I2C ist da doch sehr ähnlich ;)
M. K. schrieb: > und ich denke die in der > Arduino-Welt verwendete Lib für I2C ist da doch sehr ähnlich ;) Kann ich nicht beurteilen, kenne deine Lib nicht. https://github.com/esp8266/Arduino/tree/master/libraries/Wire https://github.com/arduino/ArduinoCore-avr/tree/master/libraries/Wire Nahezu dasselbe Interface. https://www.arduino.cc/en/Reference/Wire
diese kleinen Displays sind über den farbigen Schnippsel an der Schutzfolie kodiert, je nach Farbe muss man einen anderen Typ für die Lib einstellen
Thomas S. schrieb: > diese kleinen Displays sind über den farbigen Schnippsel an der > Schutzfolie kodiert, je nach Farbe muss man einen anderen Typ für die > Lib einstellen Quelle?
Bei den ST7735 von Adafruit gibt es diesen Mist mit den Bunten Tabs. Bei den Nachbauten ist das aber wieder anders. Und die ST7735 sind TFT, bei Oled habe ich diese komische Kennzeichnung noch nicht gesehen.
Hallo, melde mich mit Erfolg wieder. Das alte OLED ist defekt, die neuen funktionieren alle mit Adresse 0X3C . Habe eure Hinweise durchgearbeitet und bin im Programmieren einen Schritt weiter. Mit den richtigen Hinweisen und Quellen geht es voran. Schönes Wochenende
Manfred M. schrieb: > Hallo, melde mich mit Erfolg wieder. Das alte OLED ist defekt deswegen ja: Joachim B. schrieb: > hast du nur ein Display? > > Ich bestelle derlei immer mindestens doppelt weil ein Display ist kein > Display, bekam schon zu oft Schrott und konnte nicht prüfen Display oder > mein Fehler. freut mich das es jetzt klappt und die Rückmeldung!
Programmiere jetzt weiter . Jetzt kommt die nächste Stufe dran , bei Irrtum wird nächstes probiert. Ich gebe nicht auf.
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.