SSD1306 Library zur Darstellung von Text

OLED Display

Ich habe eine kleine Library für den Displaycontroller SSD1306
geschrieben, wie er häufig bei den 0.96" OLED-Displays eingesetzt wird.
Als Schnittstelle wird IIC benutzt.

Die Library zeichnet lediglich Text auf das Display.
Der Vorteil bzgl. Adafruit und u8glib ist u.a., dass bei weitem nicht so
viel Flash benötigt wird (etwa 1400 kByte wenn man nur "Hallo Welt!"
aufs Display schreibt, Adafruit braucht da rund 10 kByte, u8glib etwa 8
kByte) und auch beim RAM sieht es erheblich besser aus als bei den
üblichen Libs die jeweils mit einem Puffer in Displaygröße arbeiten,
d.h. man braucht über ein 1kByte RAM alleine für die Lib.
Meine Lib arbeitet ohne Puffer, daher wird hierfür auch kein statischer
RAM für einen Puffer benötigt. Ich hab es nicht getestet, aber auch 128
Byte RAM müssten locker ausreichend sein.
Um das gesamte Display zu beschreiben (168 Zeichen) benötigt die Lib
hier bei 400 kHz IIC-Clock nur ca. 35 ms, für eine Zeile (21 Zeichen)
sind es ca. 4,5 ms. Adafruit und u8glib benötigen beide alleine für eine
Zeile schon mehr als 20 ms.
Bei den Befehlen für das Display habe ich mich an den Befehlen von Peter
Fleury's Lib für die HD44780-Displays gehalten.
Getestet hab ich die Lib mit einem ATMega168PA und einem ATMega328P,
beide mit 16 MHz Quarz, den II2C hab ich auf 400 kHz eingestellt gehabt,
sie sollte auch auf einem ATMega88PA laufen.

Interessant dürfte die Lib für all jene sein, die kleinere AVRs
benutzten wollen, als die, die von ADAFRUIT und u8glib erwartet werden.

Als nächstes werde ich mich an die Portierung für die ATTinys dran
setzen. Eine Grafik-Variante (mit der man auch Zeichnen kann) hab ich
auch fertig, allerdings braucht die noch Feintuning und sie benötigt
einen AVR mit mehr als 1 kByte RAM (sie arbeitet mit einem Puffer).

Download: lcd_ssd1306_text.zip

Dieser Beitrag wurde unter Programmierung veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.