Guten Abend Ich habe ein Display mit SSD1305-Controller (https://www.waveshare.com/wiki/2.23inch_OLED_HAT) gekauft, und würde dieses gerne mit einem STM32-Mikrocontrollerboard (STM32L432KC) ansteuern. Ich hatte ursprünglich gelesen, das dieser Controller kompatibel ist mit dem SSD1306-Controller, und sich die beiden bloss minim unterscheiden. Allerdings erhalte ich mit der Library (https://github.com/afiskon/stm32-ssd1306/tree/master/ssd1306) bloss Pixelsalat. Weiss jemand von euch ob es für diesen Controller eine funktionierende Library gibt oder kann mir helfen die bestehende Library anzupassen? Vielen Dank für eure Hilfe David
:
Verschoben durch Moderator
Kannst du Bilder vom Pixelsalat machen und sagen wie es eigentlich aussehen soll?
Das erste Bild (Display_after_Init.jpg) zeigt das Display, nachdem es mit der Initialisietungsfunktion der Library initialisiert wurde. Dabei wird der Befehl clear ausgerufen, das Display sollte also eigentlich schwarz bleiben. Im zweiten Bild (Display_print_test.jpg) wurde mit dem Befehl put string eigentlich der Text "test" in der Schriftgrösse 7x11 ausgegeben. Wie man sieht bleiben immer noch dieselben Pixel aktiv wie nach der Initialisierung, eifach das weitere dazugekommen sind. Zur Kommunikation mit dem Display benutze ich übrigens I2C. Gruss
David S. schrieb: > Ich hatte ursprünglich gelesen, das dieser Controller kompatibel ist mit > dem SSD1306-Controller Da es unterschiedliche Controller sind würde ich da mal nicht so blauäugig davon ausgehen. Wenn ich mir alleine die Command-Table in den Datenblättern ansehe möchte ich doch stark bezweifeln das die so ohne weiteres kompatibel sind. https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf https://cdn-shop.adafruit.com/datasheets/SSD1305.pdf Adafruit hat mit Sicherheit eine passende Lib, die wird aber vermutlich für Arduino sein. Da kannst du dir mit sicherheit einiges raus ziehen, der STM läuft aber auch mir C++ 😉. Die I2C Treiber wirst du anpassen müssen.
David S. schrieb: > Das erste Bild (Display_after_Init.jpg) zeigt das Display, nachdem > es mit der Initialisietungsfunktion der Library initialisiert wurde. > Dabei wird der Befehl clear ausgerufen, das Display sollte also > eigentlich schwarz bleiben. > Im zweiten Bild (Display_print_test.jpg) wurde mit dem Befehl put string > eigentlich der Text "test" in der Schriftgrösse 7x11 ausgegeben. Wie man > sieht bleiben immer noch dieselben Pixel aktiv wie nach der > Initialisierung, eifach das weitere dazugekommen sind. > Zur Kommunikation mit dem Display benutze ich übrigens I2C. > Gruss Sieht seltsam aus. Hast du noch ein zweites Display zum testen? Display und Controller arbeiten eigentlich monochrom, aber ich sehe da Graustufen. Eventuell ist das Display kaputt, was bei dem dünnen Glas und den flexiblen Leiterbahnen leicht passieren kann.
Wollte mal eins kaufen, habe aber nach Rezensionen u.a. bei Amazon & Co die Finger von diesen Boards gelassen ...
Hast du in dem conf.h die Grösse angepasst? Also das ssd1306_conf_template.h nach ssd1306_conf.h kopieren und darin Höhe und Breite anpassen. Default ist sonst 128 x 64.
:
Bearbeitet durch User
Sigma schrieb: > Sieht seltsam aus. Hast du noch ein zweites Display zum testen? Display > und Controller arbeiten eigentlich monochrom, aber ich sehe da > Graustufen. Eventuell ist das Display kaputt, was bei dem dünnen Glas > und den flexiblen Leiterbahnen leicht passieren kann. Nein, ich habe leider kein zweites Display da.. J. S. schrieb: > Hast du in dem conf.h die Grösse angepasst? > > Also das ssd1306_conf_template.h nach ssd1306_conf.h kopieren und darin > Höhe und Breite anpassen. > Default ist sonst 128 x 64. Ich habe im File SSD1306.h die Displaygrösse angepasst, in den Zeilen
1 | /* SSD1306 settings */
|
2 | /* SSD1306 width in pixels */
|
3 | #ifndef SSD1306_WIDTH
|
4 | #define SSD1306_WIDTH 128
|
5 | #endif
|
6 | /* SSD1306 LCD height in pixels */
|
7 | #ifndef SSD1306_HEIGHT
|
8 | #define SSD1306_HEIGHT 32
|
9 | #endif
|
Welche Library verwendest du wo es ein ssd1306_conf_template.h File gibt?
keine, die ist aus dem Link den du angegeben hast. Das passt aber nicht, der Compiler sollte meckern wenn es keine ssd1306_conf.h gibt. Und wenn du die hast, dann werden da die Konstanten gesetzt und in ssd1306.h ignoriert durch die #ifdef.
Kevin M. schrieb: > David S. schrieb: >> Ich hatte ursprünglich gelesen, das dieser Controller kompatibel ist mit >> dem SSD1306-Controller > > Da es unterschiedliche Controller sind würde ich da mal nicht so > blauäugig davon ausgehen. Wenn ich mir alleine die Command-Table in den > Datenblättern ansehe möchte ich doch stark bezweifeln das die so ohne > weiteres kompatibel sind. > > https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf > https://cdn-shop.adafruit.com/datasheets/SSD1305.pdf > > Adafruit hat mit Sicherheit eine passende Lib, die wird aber vermutlich > für Arduino sein. Da kannst du dir mit sicherheit einiges raus ziehen, > der STM läuft aber auch mir C++ 😉. Die I2C Treiber wirst du anpassen > müssen. Ja, ich war da wohl etwas blauäugig das ich geglaubt habe dass das Display einfach mit der Library kompatibel sein wird.. Was würde das konkret bedeuten, das anzupassen? Müsste ich dafür in Zeilen wie
1 | SSD1306_WRITECOMMAND(0xAE); //display off |
2 | SSD1306_WRITECOMMAND(0x20); //Set Memory Addressing Mode |
3 | SSD1306_WRITECOMMAND(0x10); |
4 | SSD1306_WRITECOMMAND(0xB0); |
Die Befehle (zB 0xAE) ersetzen gemäss den Tabelen "COMMAND TABLE" im Datenblatt ersetzen?
Oder du hast das include für die conf auskommentiert, das war aber sicherlich nicht so gedacht. Man baut ein repo so das der Quellcode nicht geändert werden muss und die config aus dem Projekt kommt. Sonst ist die Quelle bei einer Änderung dirty und ein git pull macht Ärger.
https://www.waveshare.com/w/upload/c/c5/2.23inch-OLED-HAT-Code.7z steht in deinem ersten link als wget ... Da ist direkt ein Beispiel für SSD1305 und einem F10x drin.
David S. schrieb: > Sigma schrieb: > >> Sieht seltsam aus. Hast du noch ein zweites Display zum testen? Display >> und Controller arbeiten eigentlich monochrom, aber ich sehe da >> Graustufen. Eventuell ist das Display kaputt, was bei dem dünnen Glas >> und den flexiblen Leiterbahnen leicht passieren kann. > > Nein, ich habe leider kein zweites Display da.. Dann bestell noch eins oder reklamier das. Ich hatte noch nicht exakt dieses OLED in der Hand, aber die verschiedenen Helligkeitsstufen deuten stark auf einen defekt hin.
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.