Add SH1107_128x64 to the ssd1306 component (#2967)

This commit is contained in:
arunderwood 2022-01-03 13:08:16 -05:00 committed by GitHub
parent 9124d9d6e6
commit 8ad06fb9ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 3 deletions

View file

@ -31,6 +31,7 @@ MODELS = {
"SH1106_128X64": SSD1306Model.SH1106_MODEL_128_64,
"SH1106_96X16": SSD1306Model.SH1106_MODEL_96_16,
"SH1106_64X48": SSD1306Model.SH1106_MODEL_64_48,
"SH1107_128X64": SSD1306Model.SH1107_MODEL_128_64,
"SSD1305_128X32": SSD1306Model.SSD1305_MODEL_128_32,
"SSD1305_128X64": SSD1306Model.SSD1305_MODEL_128_64,
}
@ -61,8 +62,8 @@ SSD1306_SCHEMA = display.FULL_DISPLAY_SCHEMA.extend(
cv.Optional(CONF_EXTERNAL_VCC): cv.boolean,
cv.Optional(CONF_FLIP_X, default=True): cv.boolean,
cv.Optional(CONF_FLIP_Y, default=True): cv.boolean,
cv.Optional(CONF_OFFSET_X, default=0): cv.int_range(min=0, max=15),
cv.Optional(CONF_OFFSET_Y, default=0): cv.int_range(min=0, max=15),
cv.Optional(CONF_OFFSET_X, default=0): cv.int_range(min=-32, max=32),
cv.Optional(CONF_OFFSET_Y, default=0): cv.int_range(min=-32, max=32),
cv.Optional(CONF_INVERT, default=False): cv.boolean,
}
).extend(cv.polling_component_schema("1s"))

View file

@ -96,6 +96,7 @@ void SSD1306::setup() {
case SSD1306_MODEL_64_48:
case SSD1306_MODEL_64_32:
case SH1106_MODEL_64_48:
case SH1107_MODEL_128_64:
case SSD1305_MODEL_128_32:
case SSD1305_MODEL_128_64:
this->command(0x12);
@ -111,7 +112,14 @@ void SSD1306::setup() {
// Set V_COM (0xDB)
this->command(SSD1306_COMMAND_SET_VCOM_DETECT);
switch (this->model_) {
case SH1107_MODEL_128_64:
this->command(0x35);
break;
default:
this->command(0x00);
break;
}
// Display output follow RAM (0xA4)
this->command(SSD1306_COMMAND_DISPLAY_ALL_ON_RESUME);
@ -198,6 +206,8 @@ void SSD1306::turn_off() {
}
int SSD1306::get_height_internal() {
switch (this->model_) {
case SH1107_MODEL_128_64:
return 128;
case SSD1306_MODEL_128_32:
case SSD1306_MODEL_64_32:
case SH1106_MODEL_128_32:
@ -232,6 +242,7 @@ int SSD1306::get_width_internal() {
case SSD1306_MODEL_64_48:
case SSD1306_MODEL_64_32:
case SH1106_MODEL_64_48:
case SH1107_MODEL_128_64:
return 64;
default:
return 0;
@ -289,6 +300,8 @@ const char *SSD1306::model_str_() {
return "SH1106 96x16";
case SH1106_MODEL_64_48:
return "SH1106 64x48";
case SH1107_MODEL_128_64:
return "SH1107 128x64";
case SSD1305_MODEL_128_32:
return "SSD1305 128x32";
case SSD1305_MODEL_128_64:

View file

@ -17,6 +17,7 @@ enum SSD1306Model {
SH1106_MODEL_128_64,
SH1106_MODEL_96_16,
SH1106_MODEL_64_48,
SH1107_MODEL_128_64,
SSD1305_MODEL_128_32,
SSD1305_MODEL_128_64,
};