PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSD1306Ascii Bibliothek für OLED



VolkerB
05.03.2018, 12:21
Hallo zusammen,
habe mal wieder ein kleine Frage.
Ich benutze seit einiger Zeit diese Bibliothek für mein OLED-Display (128x64), an einem Arduino Pro Mini und auch an einer NodeMCU.

Läuft soweit zu meiner vollen Zufriedenheit.
Jetzt möchte ich zur Abrundung meines aktuellen Projektes etwas für die Lebensdauer des OLED tun, indem ich es nachts ausschalte und morgens wieder ein (Uhr ist drin).

Leider kenne ich nicht die passenden Befehle (sofern die überhaupt existieren).
In der SSD1306init.h taucht z.B. mal folgendes auf: #define SSD1306_DISPLAYON 0xAF.

Ich bin daher mal davon ausgegangen das es sowas wie ein DisplayON und DisplayOFF geben könnte.

Wer ist mit der Lib besser vertraut als ich und kann mir einen Hinweis geben wie ich diese Befehle einsetzen muß??

Gruß Volker

Ceos
05.03.2018, 13:45
> diese Bibliothek

Beim Suchen habe ich 4 Github Projekte und ein paar Blogs gefunden aber teilweise mit erheblichem Versionsunterschied.

Wenn du also verraten kannst welche Version und von wo könnte man vielleicht etwas besser antworten :)

oberallgeier
05.03.2018, 16:31
.. diese Bibliothek für mein OLED .. Läuft soweit zu meiner vollen Zufriedenheit .. Leider kenne ich nicht die passenden Befehle (sofern die überhaupt existieren) ..

Im Datenblatt zum SSD1306, Rev 1.1 vom Apr 2008, © 2008 Solomon Systech Limited, steht in der Table 9-1: Command Table unter anderem :


..
Entire Display ON A4h, X0=0b: Resume to RAM content display (RESET)
Output follows RAM content
A5h, X0=1b: Entire display ON
Output ignores RAM content

Set Display ON/OFF AEh, X[0]=0b:Display OFF (sleep mode) (RESET)
AFh X[0]=1b:Display ON in normal mode

In der von Dir zitierten Headedateien steht ja passend ein on-Befehl, oder? In (m)einer cpp-Headerdatei steht jedenfalls so was praktisches wie



#define SSD1306_DISPLAYOFF 0xAE
..
#define SSD1306_DISPLAYON 0xAF

Wie das im arduinocode verwendet wird kann ich Dir aber nicht schreiben. Ich programmiere in C und Cpp. Vielleicht mal Datenblatt lesen, zumindest aber die ganze Headerdatei und die Bibliothek selbst.

VolkerB
05.03.2018, 18:52
Hallo, und Danke für eure Mühe.

Ich dachte SSD1306Ascii wäre eindeutig genug. Soweit ich weiß gibt es davon nur eine vom Bill Greimann.

Aber wie das manchmal so ist, habe tagelang nach einer Lösung gesucht und nicht gefunden, zumal in der Doku zur Library auch nichts zielführendes steht.
Gestern dann durch Zufall den nachfolgenden Link entdeckt. Ich denke das probiere ich mal aus.

https://forums.adafruit.com/viewtopic.php?f=47&t=45520

Gruß Volker

- - - Aktualisiert - - -

Bin schon wieder da,
hab mal einen der Befehle in meinen Sketch eingebaut und versucht zu compilieren, das ist das Ergebnis:

33326

Was mache ich da falsch?
Die Bibliothek ist übrigens diese hier:
https://github.com/greiman/SSD1306Ascii

Gruß Volker

VolkerB
06.03.2018, 11:22
So ihr Lieben,
wollte euch noch kurz Rückmeldung geben, wie die richtigen Befehle heißen:

oled.ssd1306WriteCmd(SSD1306_DISPLAYOFF);
oled.ssd1306WriteCmd(SSD1306_DISPLAYON);

Damit hat es jetzt funktioniert. Die Info stammt direkt von Greimann.

Gruß Volker