Forum: Mikrocontroller und Digitale Elektronik Frage zu Arduino / OLED & Adafruit_SSD1306.cpp


von Eric (Gast)


Lesenswert?

Hallo Zusammen,

ich bin gerade dabei mir ein zusätzliches Info-Display an meinen Roller 
zu basteln auf dem Dinge wie die Drehzahl, Öltemperatur und die 
Tankfüllmenge angezeigt werden sollen. Ich benutze als Anzeige ein 
128*64 OLED Display für das ich die Adafruit_SSD1306 und die 
Adafruit-GFX Bibliotheken nutze.

Die Anzeige an sich läuft schon, zur Zeit noch mit Variablen bis ich die 
Sensoren alle beisammen hab.

Meine Frage ist wie ich ein eigenes Bitmap als Anzeige auf den Schirm 
bringen kann und zwar nicht zusätzlich zu dem beim OLED Start 
angezeigten Adafruit Logo, sondern wie ich dieses ersetzen kann. In der 
Adafruit_SSD1306.cpp ist ja (vermutlich?) das Logo in den Zeilen 40-106 
hinterlegt. Ich hatte bereits ein eigenes Bitmuster aus einem passenden 
Bild erzeugt (128*64 Pixel) und ab der Zeile 75 eingefügt, aber damit 
kompiliert der Code in der Arduino IDE nicht, weil, soweit ich es 
verstehe, das Muster zu groß ist.

Ist das gesamte Bitmuster ab Zeile 40 EIN Bild oder sind es 3 Bilder für 
die jeweilige Auflösung des OLED.

Grund des Ganzen ist es natürlich Speicherplatz zu sparen, da dieses 
Bild ja eh mit eingebunden wird und ob da jetzt das Adafruit Logo oder 
mein eigenes drin steht spielt ja keine Rolle.

Ich bedanke mich im Voraus für eure Hilfe

Eric

von Einer K. (Gast)


Lesenswert?

Eric schrieb:
> Ist das gesamte Bitmuster ab Zeile 40 EIN Bild oder sind es 3 Bilder für
> die jeweilige Auflösung des OLED.

3 Bilder

von Johannes S. (Gast)


Lesenswert?

Wenn du diese Version hast: 
https://github.com/adafruit/Adafruit_SSD1306/blob/master/Adafruit_SSD1306.cpp

Da wird ein Buffer mit der nötigen Größe deklariert. Die Initwerte sind 
dann abhängig von der Bildgrösse, mindestens das Kleinste, wenn das 
Display größer ist werden die anderen Bereiche noch angehängt.
Für dein 128*64 müssen die Daten also von der ersten Zeile an komplett 
das org ersetzen.

von Eric (Gast)


Lesenswert?

Vielen Dank für die schnellen Antworten :)

Wenn ich richtig gezählt habe, sind es 16*64 Bits(?), sprich 1024 
Pixel(?).

Das Logo besteht also aus 1024 Pixel und ich muß, wenn ich dieses 
ersetzen will, ein Bild bzw. Bitmuster erzeugen welches genau diese 
Pixelanzahl in einer 16 x 64 Bit Anordnung enthält?

Was mir etwas spanisch vorkommt ist, dass es nicht nur 2 Werte für in 
meinem Fall schwarz/weiß (da es ein monochromes Display ist) zu geben 
scheint, sondern mehrere Werte. Ich denke diese Bibliothek ist auch für 
farbige OLEDs geeignet wo dann entsprechend mehr Farben angezeigt 
werden. In meinem Fall werden die Pixel aber nur ein- bzw. 
ausgeschaltet. Ist das richtig?

Ich werde dann heute Abend mal versuchen das Logo zu ändern und 
berichten, vielleicht hilft es ja dem ein oder anderem.

Vielen Dank schon mal bis hierhin :)

von Johannes S. (Gast)


Lesenswert?

Eric schrieb:
> sind es 16*64 Bits(?)

16 * 64 Byte = 1024 Byte * Pixel = 8.192 Pixel = 128 * 64 Pixel

Hier sind Tools angegeben um Bitmaps zu konvertieren:
https://github.com/adafruit/Adafruit-GFX-Library

Und hier im Forum wurden auch schon solche Konverter genannt, frag mal 
die Suchfunktion.

von Dieter F. (Gast)


Lesenswert?

Dokus lesen ist wohl nicht so Deine Welt :-) - aber da musst Du durch:

https://cdn-learn.adafruit.com/downloads/pdf/monochrome-oled-breakouts.pdf

Ab Seite 12 ...

von Eric (Gast)


Lesenswert?

Wollte nur kurz berichten das es geklappt hat :)

Vielen Dank an alle die geholfen haben.

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
Noch kein Account? Hier anmelden.