Wie funktioniert dieser I2C-OLED-Bildschirm? (wahrscheinlich SH1106)

Ich habe gerade diesen Bildschirm erhalten: Link , aber leider ist er anders als andere in Bewertungen gezeigt. Das ist mein Versionslink

Es basiert wahrscheinlich auf SH1106, aber ich kann es nicht zum Laufen bringen. Ich habe einige beliebte Arduino-Bibliotheken ausprobiert, aber ich kann die Adresse dieses Bildschirms nicht vom I2C-Scanner abrufen - er antwortet nicht.

Weiß jemand wie man das programmiert?

Antworten (3)

Ich glaube, dass Ihr OLED-Bildschirm ein SSD1306-basierter sein könnte und kein SH1106, wie Sie glauben.

Sollte dies der Fall sein, werden Sie sich freuen zu wissen, dass es dafür eine Bibliothek gibt (hergestellt von Adafruit):

https://learn.adafruit.com/monochrome-oled-breakouts/arduino-library-and-examples

Nach dem, was ich gelesen habe, sollten Sie auch eine kleine Codeänderung vornehmen, damit Ihr OLED-Display funktioniert. Es ist ganz einfach und Sie finden es hier:

http://www.modlog.net/?p=887

Hoffe das hilft dir weiter.

Vielen Dank für Ihre Antwort, aber ich habe beide Bibliotheken ausprobiert: Adafruit und U8glib. Ich habe auch beide Treiber ausprobiert. Ich verbinde SCL mit PIN3, SDA mit PIN2 meines Leonardo. RST auf 5V und D/C auf GND. Und natürlich habe ich verschiedene Einstellungen und Kombinationen ausprobiert. Manchmal zeigt das Display ohne angeschlossenes Datenkabel zufälliges Rauschen, aber nach dem Neustart ist es wieder schwarz.
Hmm, das ist seltsam. Viele Google-Ergebnisse wiesen darauf hin, dass Ihr Display SSD1306 sein sollte. Sie haben keinen Schaltplan oder eine Anleitung bereitgestellt, die Ihre Verbindungen zeigt. Können Sie uns einen Link oder ein Bild geben, das sie zeigt? Sie verwenden Pull-up-Widerstände auf den I2C-Leitungen, richtig? (mehr dazu: dsscircuits.com/index.php/articles/… )
Entschuldigen Sie diese schwache Handzeichnung, ich bin jetzt nur auf dem iPad: schematisch
Der Arduino Leonardo arbeitet (vermutlich) auf 5-V-Niveau (und ich glaube, Sie versorgen das OLED-Display über die 5-V-Schiene des Arduino). Während die technischen Informationen auf der Produktseite angeben, dass es zwischen 3 V und 5 V betrieben werden kann, sollte es mit 3,3 V Logikpegeln arbeiten, während Sie es auf 5 V hochziehen. Der OLED-Controller ist damit möglicherweise nicht zufrieden und verweigert seinen Dienst oder ist im schlimmsten Fall bereits beschädigt. (Zumindest gibt das SSD1306-Datenblatt an, dass seine Logik zwischen 1,65 V und 3,3 V funktioniert, und erwähnt nicht, dass es 5-V-tolerant ist. adafruit.com/datasheets/SSD1306.pdf )
Ich werde es mit dem Spannungswandler versuchen, wenn er ankommt (oder ich werde einen machen), danke für alle Antworten! Und ja, es ist wahrscheinlich schon beschädigt ...
Dies ist wahrscheinlich ein bisschen offtopic, aber sie waren diejenigen, die Ihnen das falsche Modul geschickt haben. Zugegeben, Sie hätten Ihr OLED-Display immer noch beschädigen können, selbst wenn sie Ihnen das richtige geschickt hätten, aber am Ende können Sie argumentieren, dass Sie das falsche, nicht passende Teil haben, und sie werden es Ihnen zurückerstatten (ich kaufe anscheinend auf dieser Website). Um ehrlich zu sein). Ich rate Ihnen, das zu versuchen. Wenn Sie einen Level-Shifter bauen möchten, empfehle ich Ihnen diesen Link husstechlabs.com/support/tutorials/bi-directional-level-shifter Wenn Sie keinen 2N7000-MOSFET haben, können Sie ihn wahrscheinlich ersetzen.

Ich könnte die Anzeige mit der Adafruit-Bibliothek funktionieren lassen, basierend auf der Konfiguration wie folgt:

// If using software SPI (the default case):
#define OLED_MOSI   11       //SDA in the OLED display
#define OLED_CLK   13        //SCL in the OLED display
#define OLED_DC    9         //D/C in the OLED display
#define OLED_CS    10        //Its not connected
#define OLED_RESET 2         //RST in the OLED display
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

Denken Sie daran: Verwenden Sie das Beispiel mit der SPI-Kommunikation, alles funktioniert GROSSARTIG!!

Das sieht so aus, als ob es vielleicht eine Bearbeitung Ihrer anderen Antwort sein sollte? Sie können Ihre Antworten jederzeit bearbeiten, um zusätzliche Informationen hinzuzufügen, und normalerweise können Sie mehrere Antworten nur dann auf Stack Exchange-Sites posten, wenn es sich um zwei verschiedene Möglichkeiten zur Lösung desselben Problems handelt.

Ich habe gerade ein Display genau wie Ihres gekauft und hatte auch das gleiche Problem ... und beim Versuch, eine Lösung zu finden, kam ich mit Ihrer Frage, und später fand ich die Lösung !!:

http://forum.arduino.cc/index.php?topic=217290.0

Befolgen Sie die Schritte des Benutzers: Caltoa, -Verwenden Sie die U8glib, nehmen Sie das „Hello World“-Beispiel für Arduino und kommentieren Sie den Abschnitt aus:

U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9);   // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9

Und fügen Sie am Ende eine '2' hinzu, wie folgt:

U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9, 2);    // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9

Dann wie folgt verbinden:

U8GLIB_SSD1306_128X64 u8g( SCL, SDA, 'cs no connected', D/C, RST);

Voll funktionsfähig!!

ps Es ist kein I2C-Display, es verwendet eine SPI-Kommunikation, die Beschriftungen auf dem Display sind falsch! Deshalb müssen Sie in der Bibliothek die 'Software SPI Communication' verwenden.

Hoffe es funktioniert bei euch und allen mit dem gleichen Problem!!

Zuerst setzen Sie ein Beispiel mit einem String als Zeichen (einfaches Anführungszeichen statt doppeltes Anführungszeichen) und einen Kompilierfehler: 'D' wurde in diesem Bereich nicht deklariert. "Voll funktionsfähig!" ..... Nein Entschuldigung.