mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 06:33:51 +00:00 
			
		
		
		
	Displays
This commit is contained in:
		
							
								
								
									
										56
									
								
								esphomeyaml/components/display/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								esphomeyaml/components/display/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
| # coding=utf-8 | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.const import CONF_LAMBDA, CONF_ROTATION, CONF_UPDATE_INTERVAL | ||||
| from esphomeyaml.helpers import add, add_job, esphomelib_ns | ||||
|  | ||||
| PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
| }) | ||||
|  | ||||
| display_ns = esphomelib_ns.namespace('display') | ||||
| DisplayBuffer = display_ns.DisplayBuffer | ||||
| DisplayBufferRef = DisplayBuffer.operator('ref') | ||||
|  | ||||
| DISPLAY_ROTATIONS = { | ||||
|     0: display_ns.DISPLAY_ROTATION_0_DEGREES, | ||||
|     90: display_ns.DISPLAY_ROTATION_90_DEGREES, | ||||
|     180: display_ns.DISPLAY_ROTATION_180_DEGREES, | ||||
|     270: display_ns.DISPLAY_ROTATION_270_DEGREES, | ||||
| } | ||||
|  | ||||
|  | ||||
| def validate_rotation(value): | ||||
|     value = cv.string(value) | ||||
|     if value.endswith(u"°"): | ||||
|         value = value[:-1] | ||||
|     try: | ||||
|         value = int(value) | ||||
|     except ValueError: | ||||
|         raise vol.Invalid(u"Expected integer for rotation") | ||||
|     return cv.one_of(*DISPLAY_ROTATIONS)(value) | ||||
|  | ||||
|  | ||||
| BASIC_DISPLAY_PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ | ||||
|     vol.Optional(CONF_UPDATE_INTERVAL): cv.positive_time_period_milliseconds, | ||||
| }) | ||||
|  | ||||
| FULL_DISPLAY_PLATFORM_SCHEMA = BASIC_DISPLAY_PLATFORM_SCHEMA.extend({ | ||||
|     vol.Optional(CONF_LAMBDA): cv.lambda_, | ||||
|     vol.Optional(CONF_ROTATION): validate_rotation, | ||||
| }) | ||||
|  | ||||
|  | ||||
| def setup_display_core_(display_var, config): | ||||
|     if CONF_UPDATE_INTERVAL in config: | ||||
|         add(display_var.set_update_interval(config[CONF_UPDATE_INTERVAL])) | ||||
|     if CONF_ROTATION in config: | ||||
|         add(display_var.set_rotation(DISPLAY_ROTATIONS[config[CONF_ROTATION]])) | ||||
|  | ||||
|  | ||||
| def setup_display(display_var, config): | ||||
|     add_job(setup_display_core_, display_var, config) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_DISPLAY' | ||||
							
								
								
									
										74
									
								
								esphomeyaml/components/display/lcd_gpio.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								esphomeyaml/components/display/lcd_gpio.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml import pins | ||||
| from esphomeyaml.components import display | ||||
| from esphomeyaml.const import CONF_DIMENSIONS, CONF_ENABLE_PIN, CONF_ID, CONF_LAMBDA, CONF_PINS, \ | ||||
|     CONF_RS_PIN, CONF_RW_PIN | ||||
| from esphomeyaml.helpers import App, Pvariable, add, gpio_output_pin_expression, process_lambda | ||||
|  | ||||
| GPIOLCDDisplay = display.display_ns.GPIOLCDDisplay | ||||
| LCDDisplay = display.display_ns.LCDDisplay | ||||
| LCDDisplayRef = LCDDisplay.operator('ref') | ||||
|  | ||||
|  | ||||
| def validate_lcd_dimensions(value): | ||||
|     value = cv.dimensions(value) | ||||
|     if value[0] > 0x40: | ||||
|         raise vol.Invalid("LCD displays can't have more than 64 columns") | ||||
|     if value[1] > 4: | ||||
|         raise vol.Invalid("LCD displays can't have more than 4 rows") | ||||
|     return value | ||||
|  | ||||
|  | ||||
| def validate_pin_length(value): | ||||
|     if len(value) != 4 and len(value) != 8: | ||||
|         raise vol.Invalid("LCD Displays can either operate in 4-pin or 8-pin mode," | ||||
|                           "not {}-pin mode".format(len(value))) | ||||
|     return value | ||||
|  | ||||
|  | ||||
| PLATFORM_SCHEMA = display.BASIC_DISPLAY_PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID(): cv.declare_variable_id(GPIOLCDDisplay), | ||||
|     vol.Required(CONF_DIMENSIONS): validate_lcd_dimensions, | ||||
|  | ||||
|     vol.Required(CONF_PINS): vol.All([pins.gpio_output_pin_schema], validate_pin_length), | ||||
|     vol.Required(CONF_ENABLE_PIN): pins.gpio_output_pin_schema, | ||||
|     vol.Required(CONF_RS_PIN): pins.gpio_output_pin_schema, | ||||
|     vol.Optional(CONF_RW_PIN): pins.gpio_output_pin_schema, | ||||
|  | ||||
|     vol.Optional(CONF_LAMBDA): cv.lambda_, | ||||
| }) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     rhs = App.make_gpio_lcd_display(config[CONF_DIMENSIONS][0], config[CONF_DIMENSIONS][1]) | ||||
|     lcd = Pvariable(config[CONF_ID], rhs) | ||||
|     pins_ = [] | ||||
|     for conf in config[CONF_PINS]: | ||||
|         for pin in gpio_output_pin_expression(conf): | ||||
|             yield | ||||
|         pins_.append(pin) | ||||
|     add(lcd.set_data_pins(*pins_)) | ||||
|     for enable in gpio_output_pin_expression(config[CONF_ENABLE_PIN]): | ||||
|         yield | ||||
|     add(lcd.set_enable_pin(enable)) | ||||
|  | ||||
|     for rs in gpio_output_pin_expression(config[CONF_RS_PIN]): | ||||
|         yield | ||||
|     add(lcd.set_rs_pin(rs)) | ||||
|  | ||||
|     if CONF_RW_PIN in config: | ||||
|         for rw in gpio_output_pin_expression(config[CONF_RW_PIN]): | ||||
|             yield | ||||
|         add(lcd.set_rw_pin(rw)) | ||||
|  | ||||
|     if CONF_LAMBDA in config: | ||||
|         for lambda_ in process_lambda(config[CONF_LAMBDA], [(LCDDisplayRef, 'it')]): | ||||
|             yield | ||||
|         add(lcd.set_writer(lambda_)) | ||||
|  | ||||
|     display.setup_display(lcd, config) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_LCD_DISPLAY' | ||||
							
								
								
									
										37
									
								
								esphomeyaml/components/display/lcd_pcf8574.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								esphomeyaml/components/display/lcd_pcf8574.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.components import display | ||||
| from esphomeyaml.components.display.lcd_gpio import LCDDisplayRef, validate_lcd_dimensions | ||||
| from esphomeyaml.const import CONF_ADDRESS, CONF_DIMENSIONS, CONF_ID, CONF_LAMBDA | ||||
| from esphomeyaml.helpers import App, Pvariable, add, process_lambda | ||||
|  | ||||
| DEPENDENCIES = ['i2c'] | ||||
|  | ||||
| PCF8574LCDDisplay = display.display_ns.PCF8574LCDDisplay | ||||
|  | ||||
| PLATFORM_SCHEMA = display.BASIC_DISPLAY_PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID(): cv.declare_variable_id(PCF8574LCDDisplay), | ||||
|     vol.Required(CONF_DIMENSIONS): validate_lcd_dimensions, | ||||
|     vol.Optional(CONF_ADDRESS): cv.i2c_address, | ||||
|  | ||||
|     vol.Optional(CONF_LAMBDA): cv.lambda_, | ||||
| }) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     rhs = App.make_pcf8574_lcd_display(config[CONF_DIMENSIONS][0], config[CONF_DIMENSIONS][1]) | ||||
|     lcd = Pvariable(config[CONF_ID], rhs) | ||||
|  | ||||
|     if CONF_ADDRESS in config: | ||||
|         add(lcd.set_address(config[CONF_ADDRESS])) | ||||
|  | ||||
|     if CONF_LAMBDA in config: | ||||
|         for lambda_ in process_lambda(config[CONF_LAMBDA], [(LCDDisplayRef, 'it')]): | ||||
|             yield | ||||
|         add(lcd.set_writer(lambda_)) | ||||
|  | ||||
|     display.setup_display(lcd, config) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = ['-DUSE_LCD_DISPLAY', '-DUSE_LCD_DISPLAY_PCF8574'] | ||||
							
								
								
									
										49
									
								
								esphomeyaml/components/display/max7129.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								esphomeyaml/components/display/max7129.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml import pins | ||||
| from esphomeyaml.components import display | ||||
| from esphomeyaml.components.spi import SPIComponent | ||||
| from esphomeyaml.const import CONF_CS_PIN, CONF_ID, CONF_INTENSITY, CONF_LAMBDA, CONF_NUM_CHIPS, \ | ||||
|     CONF_SPI_ID | ||||
| from esphomeyaml.helpers import App, Pvariable, add, get_variable, gpio_output_pin_expression, \ | ||||
|     process_lambda | ||||
|  | ||||
| DEPENDENCIES = ['spi'] | ||||
|  | ||||
| MAX7219Component = display.display_ns.MAX7219Component | ||||
| MAX7219ComponentRef = MAX7219Component.operator('ref') | ||||
|  | ||||
| PLATFORM_SCHEMA = display.BASIC_DISPLAY_PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID(): cv.declare_variable_id(MAX7219Component), | ||||
|     cv.GenerateID(CONF_SPI_ID): cv.use_variable_id(SPIComponent), | ||||
|     vol.Required(CONF_CS_PIN): pins.gpio_output_pin_schema, | ||||
|  | ||||
|     vol.Optional(CONF_NUM_CHIPS): vol.All(cv.uint8_t, vol.Range(min=1)), | ||||
|     vol.Optional(CONF_INTENSITY): vol.All(cv.uint8_t, vol.Range(min=0, max=15)), | ||||
|     vol.Optional(CONF_LAMBDA): cv.lambda_, | ||||
| }) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     for spi in get_variable(config[CONF_SPI_ID]): | ||||
|         yield | ||||
|     for cs in gpio_output_pin_expression(config[CONF_CS_PIN]): | ||||
|         yield | ||||
|     rhs = App.make_max7219(spi, cs) | ||||
|     max7219 = Pvariable(config[CONF_ID], rhs) | ||||
|  | ||||
|     if CONF_NUM_CHIPS in config: | ||||
|         add(max7219.set_num_chips(config[CONF_NUM_CHIPS])) | ||||
|     if CONF_INTENSITY in config: | ||||
|         add(max7219.set_intensity(config[CONF_INTENSITY])) | ||||
|  | ||||
|     if CONF_LAMBDA in config: | ||||
|         for lambda_ in process_lambda(config[CONF_LAMBDA], [(MAX7219ComponentRef, 'it')]): | ||||
|             yield | ||||
|         add(max7219.set_writer(lambda_)) | ||||
|  | ||||
|     display.setup_display(max7219, config) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_MAX7219' | ||||
							
								
								
									
										39
									
								
								esphomeyaml/components/display/ssd1306_i2c.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								esphomeyaml/components/display/ssd1306_i2c.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml import pins | ||||
| from esphomeyaml.components import display | ||||
| from esphomeyaml.components.display import ssd1306_spi | ||||
| from esphomeyaml.const import CONF_ADDRESS, CONF_EXTERNAL_VCC, CONF_ID, CONF_MODEL, CONF_RESET_PIN | ||||
| from esphomeyaml.helpers import App, Pvariable, add, gpio_output_pin_expression | ||||
|  | ||||
| DEPENDENCIES = ['i2c'] | ||||
|  | ||||
| I2CSSD1306 = display.display_ns.I2CSSD1306 | ||||
|  | ||||
| PLATFORM_SCHEMA = display.FULL_DISPLAY_PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID(): cv.declare_variable_id(I2CSSD1306), | ||||
|     vol.Required(CONF_MODEL): cv.one_of(*ssd1306_spi.MODELS), | ||||
|     vol.Optional(CONF_RESET_PIN): pins.gpio_output_pin_schema, | ||||
|     vol.Optional(CONF_EXTERNAL_VCC): cv.boolean, | ||||
|     vol.Optional(CONF_ADDRESS): cv.i2c_address, | ||||
| }) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     ssd = Pvariable(config[CONF_ID], App.make_i2c_ssd1306()) | ||||
|     add(ssd.set_model(ssd1306_spi.MODELS[config[CONF_MODEL]])) | ||||
|  | ||||
|     if CONF_RESET_PIN in config: | ||||
|         for reset in gpio_output_pin_expression(config[CONF_RESET_PIN]): | ||||
|             yield | ||||
|         add(ssd.set_reset_pin(reset)) | ||||
|     if CONF_EXTERNAL_VCC in config: | ||||
|         add(ssd.set_external_vcc(config[CONF_EXTERNAL_VCC])) | ||||
|     if CONF_ADDRESS in config: | ||||
|         add(ssd.set_address(config[CONF_ADDRESS])) | ||||
|  | ||||
|     display.setup_display(ssd, config) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_SSD1306' | ||||
							
								
								
									
										57
									
								
								esphomeyaml/components/display/ssd1306_spi.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								esphomeyaml/components/display/ssd1306_spi.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,57 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml import pins | ||||
| from esphomeyaml.components import display | ||||
| from esphomeyaml.components.spi import SPIComponent | ||||
| from esphomeyaml.const import CONF_CS_PIN, CONF_DC_PIN, CONF_EXTERNAL_VCC, CONF_ID, CONF_MODEL, \ | ||||
|     CONF_RESET_PIN, CONF_SPI_ID | ||||
| from esphomeyaml.helpers import App, Pvariable, add, get_variable, gpio_output_pin_expression | ||||
|  | ||||
| DEPENDENCIES = ['spi'] | ||||
|  | ||||
| SPISSD1306 = display.display_ns.SPISSD1306 | ||||
|  | ||||
| MODELS = { | ||||
|     'SSD1306_128X32': display.display_ns.SSD1306_MODEL_128_32, | ||||
|     'SSD1306_128X64': display.display_ns.SSD1306_MODEL_128_64, | ||||
|     'SSD1306_96X16': display.display_ns.SSD1306_MODEL_96_16, | ||||
|     'SH1106_128X32': display.display_ns.SH1106_MODEL_128_32, | ||||
|     'SH1106_128X64': display.display_ns.SH1106_MODEL_128_64, | ||||
|     'SH1106_96X16': display.display_ns.SH1106_MODEL_96_16, | ||||
| } | ||||
|  | ||||
| PLATFORM_SCHEMA = display.FULL_DISPLAY_PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID(): cv.declare_variable_id(SPISSD1306), | ||||
|     cv.GenerateID(CONF_SPI_ID): cv.use_variable_id(SPIComponent), | ||||
|     vol.Required(CONF_CS_PIN): pins.gpio_output_pin_schema, | ||||
|     vol.Required(CONF_DC_PIN): pins.gpio_output_pin_schema, | ||||
|     vol.Required(CONF_MODEL): cv.one_of(*MODELS), | ||||
|     vol.Optional(CONF_RESET_PIN): pins.gpio_output_pin_schema, | ||||
|     vol.Optional(CONF_EXTERNAL_VCC): cv.boolean, | ||||
| }) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     for spi in get_variable(config[CONF_SPI_ID]): | ||||
|         yield | ||||
|     for cs in gpio_output_pin_expression(config[CONF_CS_PIN]): | ||||
|         yield | ||||
|     for dc in gpio_output_pin_expression(config[CONF_DC_PIN]): | ||||
|         yield | ||||
|  | ||||
|     rhs = App.make_spi_ssd1306(spi, cs, dc) | ||||
|     ssd = Pvariable(config[CONF_ID], rhs) | ||||
|     add(ssd.set_model(MODELS[config[CONF_MODEL]])) | ||||
|  | ||||
|     if CONF_RESET_PIN in config: | ||||
|         for reset in gpio_output_pin_expression(config[CONF_RESET_PIN]): | ||||
|             yield | ||||
|         add(ssd.set_reset_pin(reset)) | ||||
|     if CONF_EXTERNAL_VCC in config: | ||||
|         add(ssd.set_external_vcc(config[CONF_EXTERNAL_VCC])) | ||||
|  | ||||
|     display.setup_display(ssd, config) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_SSD1306' | ||||
							
								
								
									
										84
									
								
								esphomeyaml/components/display/waveshare_epaper.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								esphomeyaml/components/display/waveshare_epaper.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml import pins | ||||
| from esphomeyaml.components import display | ||||
| from esphomeyaml.components.spi import SPIComponent | ||||
| from esphomeyaml.const import CONF_BUSY_PIN, CONF_CS_PIN, CONF_DC_PIN, CONF_FULL_UPDATE_EVERY, \ | ||||
|     CONF_ID, CONF_LAMBDA, CONF_MODEL, CONF_RESET_PIN, CONF_SPI_ID | ||||
| from esphomeyaml.helpers import App, Pvariable, add, get_variable, gpio_input_pin_expression, \ | ||||
|     gpio_output_pin_expression, process_lambda | ||||
|  | ||||
| DEPENDENCIES = ['spi'] | ||||
|  | ||||
| WaveshareEPaperTypeA = display.display_ns.WaveshareEPaperTypeA | ||||
| WaveshareEPaper = display.display_ns.WaveshareEPaper | ||||
|  | ||||
| MODELS = { | ||||
|     '1.54in': ('a', display.display_ns.WAVESHARE_EPAPER_1_54_IN), | ||||
|     '2.13in': ('a', display.display_ns.WAVESHARE_EPAPER_2_13_IN), | ||||
|     '2.90in': ('a', display.display_ns.WAVESHARE_EPAPER_2_9_IN), | ||||
|     '2.70in': ('b', display.display_ns.WAVESHARE_EPAPER_2_7_IN), | ||||
|     '4.20in': ('b', display.display_ns.WAVESHARE_EPAPER_4_2_IN), | ||||
|     '7.50in': ('b', display.display_ns.WAVESHARE_EPAPER_7_5_IN), | ||||
| } | ||||
|  | ||||
|  | ||||
| def validate_full_update_every_only_type_a(value): | ||||
|     if CONF_FULL_UPDATE_EVERY not in value: | ||||
|         return value | ||||
|     if MODELS[value[CONF_MODEL]][0] != 'a': | ||||
|         raise vol.Invalid("The 'full_update_every' option is only available for models " | ||||
|                           "'1.54in', '2.13in' and '2.90in'.") | ||||
|     return value | ||||
|  | ||||
|  | ||||
| PLATFORM_SCHEMA = vol.All(display.FULL_DISPLAY_PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID(): cv.declare_variable_id(None), | ||||
|     cv.GenerateID(CONF_SPI_ID): cv.use_variable_id(SPIComponent), | ||||
|     vol.Required(CONF_CS_PIN): pins.gpio_output_pin_schema, | ||||
|     vol.Required(CONF_DC_PIN): pins.gpio_output_pin_schema, | ||||
|     vol.Required(CONF_MODEL): cv.one_of(*MODELS), | ||||
|     vol.Optional(CONF_RESET_PIN): pins.gpio_output_pin_schema, | ||||
|     vol.Optional(CONF_BUSY_PIN): pins.gpio_input_pin_schema, | ||||
|     vol.Optional(CONF_FULL_UPDATE_EVERY): cv.uint32_t, | ||||
| }), validate_full_update_every_only_type_a) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     for spi in get_variable(config[CONF_SPI_ID]): | ||||
|         yield | ||||
|     for cs in gpio_output_pin_expression(config[CONF_CS_PIN]): | ||||
|         yield | ||||
|     for dc in gpio_output_pin_expression(config[CONF_DC_PIN]): | ||||
|         yield | ||||
|  | ||||
|     model_type, model = MODELS[config[CONF_MODEL]] | ||||
|     if model_type == 'a': | ||||
|         rhs = App.make_waveshare_epaper_type_a(spi, cs, dc, model) | ||||
|         epaper = Pvariable(config[CONF_ID], rhs, type=WaveshareEPaperTypeA) | ||||
|     elif model_type == 'b': | ||||
|         rhs = App.make_waveshare_epaper_type_b(spi, cs, dc, model) | ||||
|         epaper = Pvariable(config[CONF_ID], rhs, type=WaveshareEPaper) | ||||
|     else: | ||||
|         raise NotImplementedError() | ||||
|  | ||||
|     if CONF_LAMBDA in config: | ||||
|         for lambda_ in process_lambda(config[CONF_LAMBDA], [(display.DisplayBufferRef, 'it')]): | ||||
|             yield | ||||
|         add(epaper.set_writer(lambda_)) | ||||
|     if CONF_RESET_PIN in config: | ||||
|         for reset in gpio_output_pin_expression(config[CONF_RESET_PIN]): | ||||
|             yield | ||||
|         add(epaper.set_reset_pin(reset)) | ||||
|     if CONF_BUSY_PIN in config: | ||||
|         for reset in gpio_input_pin_expression(config[CONF_BUSY_PIN]): | ||||
|             yield | ||||
|         add(epaper.set_busy_pin(reset)) | ||||
|     if CONF_FULL_UPDATE_EVERY in config: | ||||
|         add(epaper.set_full_update_every(config[CONF_FULL_UPDATE_EVERY])) | ||||
|  | ||||
|     display.setup_display(epaper, config) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_WAVESHARE_EPAPER' | ||||
		Reference in New Issue
	
	Block a user