A buffered display driver for the SSD1306 OLED controller. Please note that this is a work-in-progress; only very rudimentary drawing support is provided.
Dependents: Projetv0 greenhouse_proj ProjetLong_Serre_V3 ProjetLong_Serre_V3_1 ... more
Example of use:
#include "mbed.h" #include "ssd1306.h" #include "standard_font.h" #include "bold_font.h" SSD1306 oled(p8 /* cs */, p9 /* reset */, p14 /* dc */, p13 /* clock */, p11 /* data */); int main() { oled.initialise(); oled.clear(); oled.set_contrast(255); // max contrast oled.set_font(bold_font, 8); oled.printf("Heading\r\n"); oled.set_font(standard_font, 6); oled.printf("Hello World!\r\n"); oled.printf("Some more text here..."); oled.update(); while (1) { wait(2); oled.scroll_up(); oled.update(); } }
ssd1306.h
- Committer:
- Byrn
- Date:
- 2013-02-05
- Revision:
- 0:21cb91208386
- Child:
- 1:1d58d378221c
File content as of revision 0:21cb91208386:
#ifndef __SSD1306_H__ #define __SSD1306_H__ #define FONT_HEIGHT_OFFSET 0 /* Character pixel height (in multiples of 8) at this position */ #define FONT_SIZE_OFFSET 1 /* Character data size (in bytes) at this position */ #define FONT_DATA_OFFSET 2 /* Data starts at this position */ #define FONT_START ' ' /* First character value in the font table */ class SSD1306 { public: SSD1306(PinName cs, PinName rs, PinName dc, PinName clk, PinName data); void initialise(); void update(); void off(); void on(); void invert(int i); void set_low_column(int value); void set_high_column(int value); void set_start_line(int value); void set_display_offset(int value); void clear(); void set_pixel(int x, int y); void clear_pixel(int x, int y); void line(int x0, int y0, int x1, int y1); void draw_string(char *font, int x, int y, const char *string); void draw_char(char *font, int x, int y, char c); private: SPI _spi; DigitalOut _cs, _reset, _dc; char _screen[1024]; int _cursor_x, _cursor_y; void _send_command(int code); void _send_data(int value); }; #define SSD1306_LCDWIDTH 128 #define SSD1306_LCDHEIGHT 64 #define SSD1306_SETCONTRAST 0x81 #define SSD1306_DISPLAYALLON_RESUME 0xA4 #define SSD1306_DISPLAYALLON 0xA5 #define SSD1306_NORMALDISPLAY 0xA6 #define SSD1306_INVERTDISPLAY 0xA7 #define SSD1306_DISPLAYOFF 0xAE #define SSD1306_DISPLAYON 0xAF #define SSD1306_SETDISPLAYOFFSET 0xD3 #define SSD1306_SETCOMPINS 0xDA #define SSD1306_SETVCOMDETECT 0xDB #define SSD1306_SETDISPLAYCLOCKDIV 0xD5 #define SSD1306_SETPRECHARGE 0xD9 #define SSD1306_SETMULTIPLEX 0xA8 #define SSD1306_SETLOWCOLUMN 0x00 #define SSD1306_SETHIGHCOLUMN 0x10 #define SSD1306_SETSTARTLINE 0x40 #define SSD1306_MEMORYMODE 0x20 #define SSD1306_COMSCANINC 0xC0 #define SSD1306_COMSCANDEC 0xC8 #define SSD1306_SEGREMAP 0xA0 #define SSD1306_CHARGEPUMP 0x8D #define SSD1306_EXTERNALVCC 0x1 #define SSD1306_SWITCHCAPVCC 0x2 #endif