mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Add SH1107_128x64 to the ssd1306 component (#2967)
This commit is contained in:
		| @@ -31,6 +31,7 @@ MODELS = { | |||||||
|     "SH1106_128X64": SSD1306Model.SH1106_MODEL_128_64, |     "SH1106_128X64": SSD1306Model.SH1106_MODEL_128_64, | ||||||
|     "SH1106_96X16": SSD1306Model.SH1106_MODEL_96_16, |     "SH1106_96X16": SSD1306Model.SH1106_MODEL_96_16, | ||||||
|     "SH1106_64X48": SSD1306Model.SH1106_MODEL_64_48, |     "SH1106_64X48": SSD1306Model.SH1106_MODEL_64_48, | ||||||
|  |     "SH1107_128X64": SSD1306Model.SH1107_MODEL_128_64, | ||||||
|     "SSD1305_128X32": SSD1306Model.SSD1305_MODEL_128_32, |     "SSD1305_128X32": SSD1306Model.SSD1305_MODEL_128_32, | ||||||
|     "SSD1305_128X64": SSD1306Model.SSD1305_MODEL_128_64, |     "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_EXTERNAL_VCC): cv.boolean, | ||||||
|         cv.Optional(CONF_FLIP_X, default=True): cv.boolean, |         cv.Optional(CONF_FLIP_X, default=True): cv.boolean, | ||||||
|         cv.Optional(CONF_FLIP_Y, 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_X, default=0): cv.int_range(min=-32, max=32), | ||||||
|         cv.Optional(CONF_OFFSET_Y, default=0): cv.int_range(min=0, max=15), |         cv.Optional(CONF_OFFSET_Y, default=0): cv.int_range(min=-32, max=32), | ||||||
|         cv.Optional(CONF_INVERT, default=False): cv.boolean, |         cv.Optional(CONF_INVERT, default=False): cv.boolean, | ||||||
|     } |     } | ||||||
| ).extend(cv.polling_component_schema("1s")) | ).extend(cv.polling_component_schema("1s")) | ||||||
|   | |||||||
| @@ -96,6 +96,7 @@ void SSD1306::setup() { | |||||||
|     case SSD1306_MODEL_64_48: |     case SSD1306_MODEL_64_48: | ||||||
|     case SSD1306_MODEL_64_32: |     case SSD1306_MODEL_64_32: | ||||||
|     case SH1106_MODEL_64_48: |     case SH1106_MODEL_64_48: | ||||||
|  |     case SH1107_MODEL_128_64: | ||||||
|     case SSD1305_MODEL_128_32: |     case SSD1305_MODEL_128_32: | ||||||
|     case SSD1305_MODEL_128_64: |     case SSD1305_MODEL_128_64: | ||||||
|       this->command(0x12); |       this->command(0x12); | ||||||
| @@ -111,7 +112,14 @@ void SSD1306::setup() { | |||||||
|  |  | ||||||
|   // Set V_COM (0xDB) |   // Set V_COM (0xDB) | ||||||
|   this->command(SSD1306_COMMAND_SET_VCOM_DETECT); |   this->command(SSD1306_COMMAND_SET_VCOM_DETECT); | ||||||
|  |   switch (this->model_) { | ||||||
|  |     case SH1107_MODEL_128_64: | ||||||
|  |       this->command(0x35); | ||||||
|  |       break; | ||||||
|  |     default: | ||||||
|       this->command(0x00); |       this->command(0x00); | ||||||
|  |       break; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   // Display output follow RAM (0xA4) |   // Display output follow RAM (0xA4) | ||||||
|   this->command(SSD1306_COMMAND_DISPLAY_ALL_ON_RESUME); |   this->command(SSD1306_COMMAND_DISPLAY_ALL_ON_RESUME); | ||||||
| @@ -198,6 +206,8 @@ void SSD1306::turn_off() { | |||||||
| } | } | ||||||
| int SSD1306::get_height_internal() { | int SSD1306::get_height_internal() { | ||||||
|   switch (this->model_) { |   switch (this->model_) { | ||||||
|  |     case SH1107_MODEL_128_64: | ||||||
|  |       return 128; | ||||||
|     case SSD1306_MODEL_128_32: |     case SSD1306_MODEL_128_32: | ||||||
|     case SSD1306_MODEL_64_32: |     case SSD1306_MODEL_64_32: | ||||||
|     case SH1106_MODEL_128_32: |     case SH1106_MODEL_128_32: | ||||||
| @@ -232,6 +242,7 @@ int SSD1306::get_width_internal() { | |||||||
|     case SSD1306_MODEL_64_48: |     case SSD1306_MODEL_64_48: | ||||||
|     case SSD1306_MODEL_64_32: |     case SSD1306_MODEL_64_32: | ||||||
|     case SH1106_MODEL_64_48: |     case SH1106_MODEL_64_48: | ||||||
|  |     case SH1107_MODEL_128_64: | ||||||
|       return 64; |       return 64; | ||||||
|     default: |     default: | ||||||
|       return 0; |       return 0; | ||||||
| @@ -289,6 +300,8 @@ const char *SSD1306::model_str_() { | |||||||
|       return "SH1106 96x16"; |       return "SH1106 96x16"; | ||||||
|     case SH1106_MODEL_64_48: |     case SH1106_MODEL_64_48: | ||||||
|       return "SH1106 64x48"; |       return "SH1106 64x48"; | ||||||
|  |     case SH1107_MODEL_128_64: | ||||||
|  |       return "SH1107 128x64"; | ||||||
|     case SSD1305_MODEL_128_32: |     case SSD1305_MODEL_128_32: | ||||||
|       return "SSD1305 128x32"; |       return "SSD1305 128x32"; | ||||||
|     case SSD1305_MODEL_128_64: |     case SSD1305_MODEL_128_64: | ||||||
|   | |||||||
| @@ -17,6 +17,7 @@ enum SSD1306Model { | |||||||
|   SH1106_MODEL_128_64, |   SH1106_MODEL_128_64, | ||||||
|   SH1106_MODEL_96_16, |   SH1106_MODEL_96_16, | ||||||
|   SH1106_MODEL_64_48, |   SH1106_MODEL_64_48, | ||||||
|  |   SH1107_MODEL_128_64, | ||||||
|   SSD1305_MODEL_128_32, |   SSD1305_MODEL_128_32, | ||||||
|   SSD1305_MODEL_128_64, |   SSD1305_MODEL_128_64, | ||||||
| }; | }; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user