User manual
77 78
10.2 OLED Brick Bibliothek
Wir haben zahlreiche Befehle vorbereitet, mit denen man die OLED einfacher ansprechen kann, als mit reinen
I2C Befehlen. Die basieren auf dem internen Controller und man kann damit jedes Pixel ansteuern, Helligkeiten
programmieren und vieles mehr. Ausgabe von Zeichen, Schriften, Linien usw. ist nicht im OLED vorgesehen,
daher muss es dann extern programmiert werden, dabei hilft unsere eine kleine Bibliothek.
Der wichtigste Befehl ist:
i2c_oled_initall(i2coledssd);
Damit wird das OLED überhaupt erst in Betrieb genommen. Auch das Timing der OLED wird hier programmiert,
so dass es für die interne Brick-Schaltung angepasst ist. Als Parameter wird die I2C Adresse angegeben:
#dene i2coledssd (0x7A>>1) // Default
Oder
#dene i2coledssd (0x78>>1) // optional für zweites OLED
Es wird ein interner buffer (lcdbuffer[]) verwendet um alle Pixel zu speichern und diese dann auf einmal zu
übertragen. Das vermeidet Flimmereffekte, die Double-Buffering genannt werden.
// Helle und dunkle Pixel, in dieser Ausführung gibt es keine Zwischenstufen.
#dene COLOR_BLACK 0 // damit vereinfachte Parameterübergabe
#dene COLOR_WHITE 1 // OLED Pixel = an (wenn nicht invers)
+
-
9V
1A
SCLS DA
+9V
A0
A1
Tx
Rx
PD2
SCLKMOSI
PD3
PD 6
PD 4
PD 5
PD 7
A7
A3
A2
A6
NANO
to
Br ick`R`
3,3V 5V
USB
B0
SS
MISC
B1
I²C
I²C OLED 64x48
SCL
SDA
SCL
SDA
+9V
Adr:8x,Xx
+9V
void i2c_oled_write_command(unsigned char i2cbaseadr, unsigned char cmdvalue)
Intern verwendet um an den I2C Daten zu schreiben
void i2c_oled_entire_onoff(unsigned char i2cbaseadr, unsigned char onoff)
Damit kann man die OLED an- oder ausschalten. 1=an 0=aus
void i2c_oled_display_onoff(unsigned char i2cbaseadr, unsigned char onoff)
Auch zum an- und auschalten des Displays ander Variante
void i2c_oled_setbrightness(unsigned char i2cbaseadr, unsigned char wert)
Helligkeit des OLEDs setzen 0..255 als Wert 0=dunkel
void i2c_oled_inverse_onoff(unsigned char i2cbaseadr, unsigned char onoff)
Invertieren des Displays, 1=invers
unsigned char i2c_oled_write_top(unsigned char i2cbaseadr, int zeile,
int bytes, unsigned char barray[],signed int sh1106padding)
Intern verwendet um eine Zeilegruppe (8) zu schreiben.
void disp_lcd_frombuffer()
Überträgt den Bufferinhalt (lcdbuffer[]) auf das Display.
void disp_buffer_clear(unsigned short data)
Löscht den Pixelbuffer (lcdbuffer[]) mit data (=0 oder =1)
void disp_setpixel(int x, int y, unsigned short col1)
Setzt ein Pixel bei x,y wobei x links und y oben ist.
col1 deniert die Farbe (0 oder 1)
unsigned short disp_setchar(int x, int y, unsigned char chidx1, unsigned short color)
Setzt ein Zeichen bei x,y mit ASCII Coe chidx1 und color (=0 oder =1)
int disp_print_xy_lcd(int x, int y, unsigned char *text, unsigned short color, int
chset)
Ausgabe eines Textes (ASCII bei char *text) an der Position x,y
mit dem Zeichensatz chset (bei uns ignoriert), linke obere Ecke.
void disp_line_lcd(int x0, int y0, int x1, int y1, unsigned short col)
Linie von x0,y0 nach x1,y1 in Farbe col (0,1)
void disp_rect_lcd(int x1, int y1, int x2, int y2, unsigned short col)
Rechteck bei x1,y1 aufgespannt nach x2,y2 in Farbe col(0,1)
void disp_lledrect_lcd(int x1, int y1, int x2, int y2, unsigned short col)
Gefuelltes Rechteck bei x1,y1 aufgespannt nach x2,y2 in Farbe col(0,1)










