Waveshare 1.3 Inch OLED HAT im I2C Modus

#7788988
Lesenswert?

Ich habe mir aus Bequemlichkeit das im Betreff genannte Displaymodul mit ein paar Tasten um ein OLED herum besorgt und auf I2C gejumpert. Steht default auf 4-wire SPI und ist eigentlich für Raspi u.ä. gedacht. Dafür gibts auch Treiber. Will das aber mit einem uC ansteuern.

Leider bekomme ich auf keiner Device-Adresse ein ack. Da im verfügbaren Schaltplan schon die Verbindungen der Tasten zum Steckverbinder nicht korrekt sind: einfach eine Frage hier ins Forum, ob jemand schon das Display unter I2C erfolgreich in Betrieb nehmen konnte?

Über einen Tipp welche Bugs noch in der Doku stecken wäre ich dankbar!

Angehängte Dateien:
#7789141
Lesenswert?

Ich habe SCL und SDA auf dem Oszi, ist ja bei neuen I²C-Devices fast unumgänglich.

Ich nutze die OLED Library von Michael Köhler, wurde hier auch schon vorgestellt. Kann mit ssd1306/ssd1309/sh1106 Displaychips umgehen.

Läuft auf einem AVR Tiny 2-Series unter Nutzung des HW-TWI. Von Microchip gibt es ein Tutorial und Beispielcode im Github, der ist aber bezüglich der Ack-Abfrage nicht sauber. Funktioniert mit gemäßigtem Timing trotzdem, aber da hätte ich mehr Sorgfalt erwartet.

Habe noch ein Dokument "1.3inch OLED HAT User Manual" ein paar HW-Hinweise gefunden, zusammen mit dem Schematics kann man die Pins für die Tasten dann richtig zuordnen.

In dem Dokument ist auch eine Tabelle wo ein RESET gelistet ist. Hatte ich bei andereren OLEDs noch nicht. Nach dem Reset-Anschluß funktionierte das Display auf Adresse 0x78, wie all die anderen kleinen OLEDs von 0,96"-1,3". In der Doku stand Adresse 0x3C, aber das ist das gleiche wenn man den Shift für das R/W Bit berücksichtigt.

Danke für die Rückmeldungen. Der Punkt ist erledigt, Display funktioniert nun sehr gut.

#7789354
Lesenswert?

0x78 kann nicht die Adresse lt. I2C-Spezifikation sein, weil für die Adresse nur 7 Bit zur Verfügung stehen.

Das wissen aber nur Leute die irgendeine beliebige eine Doku ueber I2C gelesen haben. Mittlerweile besteht die Kompetenz aber ausschliesslich im googlen und kopieren. Man darf da nicht mehr soviel erwarten!

Vanye

#7789392
Lesenswert?

muss mich (leider) Vanye R. (vanye_rijan) 09.12.2024 10:57 anschließen...

Laut waveshare ist das ein SH1106. Wenn du wirklich nur das Display, also ohne Buttons, nutzen willst, gibts viele funktionierende Treiber auf Github.

Ich bin mit dem glücklich geworden: // ss_oled (Small, Simple OLED library) // Copyright (c) 2017-2019 BitBank Software, Inc. // Written by Larry Bank (bitbank@pobox.com)

Etwas verschlankt (Soft-I2C rausgeschmissen), Target ist Raspi-Pi Pico mit SDK 2.0

PS: noch simplere 1,3"-OLEDs gibts bei AZDelivery. (wenn man das hier so sagen darf, wenn nicht @admin Hinweis löschen)

#7789396
Lesenswert?

noch simplere 1,3"-OLEDs gibts bei AZDelivery. (wenn man das hier so sagen darf, wenn nicht @admin Hinweis löschen)

Alle China-Oleds die ich bisher gesehen habe (eine Menge) hatten alle sehr aehnliche, aber nicht immer identische Driver-ICs. Die sind also letztlich alle gleich simple und unterscheiden sich nur mal in einem Register oder etwas anderem Init. AUsserdem haben die Entwickler dieser Adapterboards manchmal auch so ihre Probleme mit DAtenblatt lesen. Die verwechseln dann schon mal I2C mit SPI und verwenden die falschen Bezeichnungen. SO hier und da war da bei mir kreatives Raten notwendig.

Vanye

#7789510
Lesenswert?

sind wir mal wieder leicht abgedriftet... :-)

Wenn das Thema schon mal hoch gekocht ist: Ich würde gern diesem Treiber "https://github.com/bitbank2/ss_oled" die deutschen Umlaute beibringen.

Es gibt dieses Font-array "const uint8_t ucFont[]" Mir ist noch nicht ganz klar, wie es strukturiert ist und ob man einfach äöüß usw. hintendran pappen könnte.

Mit welchem Generator bastelt man sich die dt. Umlaut?

Viele Grüße runout

Ach ja, der SH1106-Display-Controller taucht als "0x3C" am Bus auf.

Angehängte Dateien:
#7789541
Lesenswert?

Bei diesem Display ist die Adresse aber 0x3C und das I2C Adressbyte dann 0x78.

passt ja.

Das sind die drei Pixeltabellen der Schriftzeichen uCFont, uCBigFont, uCSmallFont: https://github.com/bitbank2/ss_oled/blob/master/src/ss_oled.cpp Ich hab jetzt nicht nachgezählt, wie viele Zeichen es pro Tabelle sind, aber da müssten die Umlaute für ASCII jeweils irgendwo am Ende eingefügt werden.

#7789582
Lesenswert?

ja, ja soweit klar.

Ich nutze den "normalen" font: uCFont

Irgendwie wird im Quellcode vom ASCII-Wert (0x30 = "0") der Offset 0x30 abgezogen und dann pointed der in das Array.

Es könnten 8x8 Pixel sein(?) Trotzdem für mich noch kryptisch.

Wie schon angefragt: Mit welchem Generator bastelt man sich die dt. Umlaute?

Werde wohl im Datenblatt mal tieftauchen müssen.

runout

#7789601
Lesenswert?

Mit welchem Generator bastelt man sich die dt. Umlaute?

Also ich wuerde ja einfach die Pixel des "a" kopieren und dann noch zwei Punkte drauf machen, einfach so binaer. So schwer ist das doch wohl nicht oder?

Viel interessanter ist das schon die Frage wo im Zeichensatz sollen deine deutschen Sonderzeichen liegen damit sie korrekt wiedergeben werden wenn du dieses Sonderzeichen in deinem Sourcecode nutzt.

Vanye

#7789725
Lesenswert?

Hallo Zusammen,

danke erstmal für die Hinweise bzw. den Quellcode.

Ich habe hier noch eine Implementierung gefunden:

https://forum.g-heinrichs.de/viewtopic.php?t=125

Naja, in BASCOM aber immerhin. Die dt. Umlaute sind einfach hintendran gepappt und jeder einzelne Umlaut wird "gecastet" und gezielt in das Fontende reingegriffen. Nicht so schön aber scheint zu funktionieren.

#7789821
Lesenswert?

Mein "Apple]["-Nachbau hatte ein Zeichensatz-Eprom das daraus "AppleÜÄ" machte, vermutlich nach der Norm

Klar, und meiner einen SChalter um da wieder KLammern hin zu machen. :-D

Aber solche Wege muss man ja heute nicht mehr gehen. Jeder COntroller wird die paar BYtes im Flash uebrig haben im die BItmaps irgendwo dranzuhaengen und muss man sich nur einen Code ausdenken wo man sie liegen haben will und referenzieren.

VAnye

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren