6 namespace ssd1306_base {
8 static const char *
const TAG =
"ssd1306";
10 static const uint8_t SSD1306_MAX_CONTRAST = 255;
11 static const uint8_t SSD1305_MAX_BRIGHTNESS = 255;
13 static const uint8_t SSD1306_COMMAND_DISPLAY_OFF = 0xAE;
14 static const uint8_t SSD1306_COMMAND_DISPLAY_ON = 0xAF;
15 static const uint8_t SSD1306_COMMAND_SET_DISPLAY_CLOCK_DIV = 0xD5;
16 static const uint8_t SSD1306_COMMAND_SET_MULTIPLEX = 0xA8;
17 static const uint8_t SSD1306_COMMAND_SET_DISPLAY_OFFSET_Y = 0xD3;
18 static const uint8_t SSD1306_COMMAND_SET_START_LINE = 0x40;
19 static const uint8_t SSD1306_COMMAND_CHARGE_PUMP = 0x8D;
20 static const uint8_t SSD1306_COMMAND_MEMORY_MODE = 0x20;
21 static const uint8_t SSD1306_COMMAND_SEGRE_MAP = 0xA0;
22 static const uint8_t SSD1306_COMMAND_COM_SCAN_INC = 0xC0;
23 static const uint8_t SSD1306_COMMAND_COM_SCAN_DEC = 0xC8;
24 static const uint8_t SSD1306_COMMAND_SET_COM_PINS = 0xDA;
25 static const uint8_t SSD1306_COMMAND_SET_CONTRAST = 0x81;
26 static const uint8_t SSD1306_COMMAND_SET_PRE_CHARGE = 0xD9;
27 static const uint8_t SSD1306_COMMAND_SET_VCOM_DETECT = 0xDB;
28 static const uint8_t SSD1306_COMMAND_DISPLAY_ALL_ON_RESUME = 0xA4;
29 static const uint8_t SSD1306_COMMAND_DEACTIVATE_SCROLL = 0x2E;
30 static const uint8_t SSD1306_COMMAND_COLUMN_ADDRESS = 0x21;
31 static const uint8_t SSD1306_COMMAND_PAGE_ADDRESS = 0x22;
32 static const uint8_t SSD1306_COMMAND_NORMAL_DISPLAY = 0xA6;
33 static const uint8_t SSD1306_COMMAND_INVERSE_DISPLAY = 0xA7;
35 static const uint8_t SSD1305_COMMAND_SET_BRIGHTNESS = 0x82;
36 static const uint8_t SSD1305_COMMAND_SET_AREA_COLOR = 0xD8;
42 this->
command(SSD1306_COMMAND_DISPLAY_OFF);
45 this->
command(SSD1306_COMMAND_SET_DISPLAY_CLOCK_DIV);
51 this->
command(SSD1305_COMMAND_SET_AREA_COLOR);
56 this->
command(SSD1306_COMMAND_SET_MULTIPLEX);
60 this->
command(SSD1306_COMMAND_SET_DISPLAY_OFFSET_Y);
63 this->
command(SSD1306_COMMAND_SET_START_LINE | 0x00);
68 this->
command(SSD1306_COMMAND_CHARGE_PUMP);
77 this->
command(SSD1306_COMMAND_MEMORY_MODE);
84 this->
command(SSD1306_COMMAND_COM_SCAN_INC | (this->
flip_y_ << 3));
87 this->
command(SSD1306_COMMAND_SET_COM_PINS);
108 this->
command(SSD1306_COMMAND_SET_PRE_CHARGE);
116 this->
command(SSD1306_COMMAND_SET_VCOM_DETECT);
127 this->
command(SSD1306_COMMAND_DISPLAY_ALL_ON_RESUME);
133 this->
command(SSD1306_COMMAND_DEACTIVATE_SCROLL);
152 this->
command(SSD1306_COMMAND_COLUMN_ADDRESS);
165 this->
command(SSD1306_COMMAND_PAGE_ADDRESS);
188 this->
command(SSD1306_COMMAND_SET_CONTRAST);
197 this->
command(SSD1305_COMMAND_SET_BRIGHTNESS);
202 this->
command(SSD1306_COMMAND_DISPLAY_ON);
206 this->
command(SSD1306_COMMAND_DISPLAY_OFF);
261 uint8_t subpos = y & 0x07;
263 this->
buffer_[pos] |= (1 << subpos);
265 this->
buffer_[pos] &= ~(1 << subpos);
269 uint8_t
fill = color.
is_on() ? 0xFF : 0x00;
288 return "SSD1306 128x32";
290 return "SSD1306 128x64";
292 return "SSD1306 64x32";
294 return "SSD1306 96x16";
296 return "SSD1306 64x48";
298 return "SH1106 128x32";
300 return "SH1106 128x64";
302 return "SH1106 96x16";
304 return "SH1106 64x48";
306 return "SH1107 128x64";
308 return "SSD1305 128x32";
310 return "SSD1305 128x64";
int get_height_internal() override
virtual void digital_write(bool value)=0
virtual void write_display_data()=0
constexpr const T & clamp(const T &v, const T &lo, const T &hi, Compare comp)
void set_contrast(float contrast)
size_t get_buffer_length_()
void init_internal_(uint32_t buffer_length)
const char * model_str_()
int get_width_internal() override
void draw_absolute_pixel_internal(int x, int y, Color color) override
virtual void command(uint8_t value)=0
bool is_on() ALWAYS_INLINE
void fill(Color color) override
void set_brightness(float brightness)
void IRAM_ATTR HOT delay(uint32_t ms)