Mercurial > code > home > repos > homeauto
changeset 802:d88085f35745
theater_lcd displays lines from mqtt on an ili9486 display in 8-bit mode
author | drewp@bigasterisk.com |
---|---|
date | Sat, 27 Mar 2021 22:15:56 -0700 |
parents | 706539aa1990 |
children | bb3a7869b54d |
files | espNode/theater_lcd.yaml |
diffstat | 1 files changed, 135 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/espNode/theater_lcd.yaml Sat Mar 27 22:15:56 2021 -0700 @@ -0,0 +1,135 @@ + +esphome: + name: theater_lcd + platform: ESP32 + board: esp32cam + build_path: build + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + domain: '' + +mqtt: + broker: '10.2.0.1' + port: 1883 + username: '' + password: '' + +logger: + baud_rate: 115200 + level: DEBUG + +ota: + +# image: +# - file: "colorscape.png" +# id: colorscape +# type: RGB24 + +font: + - file: "bluefish-scratched/BLUEFISH BLACK SCRATCHED_Demo.ttf" + id: font_bluefish_big + size: 120 + glyphs: "0123456789ms " + - file: "Teko/Teko-Regular.ttf" + id: font_teko_small + size: 60 + glyphs: "+-_.:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ " + +display: + - platform: ili9486_8bit + model: 'TFT_3.5' + id: lcd + cs_pin: GPIO16 # wh + dc_pin: GPIO17 # gy + wr_pin: GPIO5 # pu + rd_pin: GPIO18 # bk + data_pins: + - GPIO33 # gy + - GPIO32 # bk + - GPIO13 # pu + - GPIO12 # bl + - GPIO14 # gn + - GPIO27 # ye + - GPIO26 # or + - GPIO25 # re + rotation: 90 + lambda: |- + it.clear(); // may be cheaper to get text extent and fill that box only + { + const std::string line = id(line1).state; + const char color_letter = line[0]; + const char* text = line.c_str() + (line.size() > 1 ? 1 : 0); + Color color; + switch(color_letter) { + // from https://coolors.co/e75d18-48a8a8-ededca-ac162a-550589-ed787f + case 'o': color = Color(0xe75d18);break; + case 'b': color = Color(0x48a8a8);break; + case 'y': color = Color(0xededca);break; + case 'r': color = Color(0xac162a);break; + case 'i': color = Color(0x550589);break; + case 'p': color = Color(0xed787f);break; + default: color = COLOR_WHITE; + } + it.print(0, 0, id(font_bluefish_big), color, text); + } + { + const std::string line = id(line2).state; + const char color_letter = line[0]; + const char* text = line.c_str() + (line.size() > 1 ? 1 : 0); + Color color; + switch(color_letter) { + case 'o': color = Color(0xe75d18);break; + case 'b': color = Color(0x48a8a8);break; + case 'y': color = Color(0xededca);break; + case 'r': color = Color(0xac162a);break; + case 'i': color = Color(0x550589);break; + case 'p': color = Color(0xed787f);break; + default: color = COLOR_WHITE; + } + it.print(0, 150, id(font_teko_small), color, text); + + } + + +text_sensor: + - platform: mqtt_subscribe + name: "line1" + id: line1 + topic: theater_lcd/line1 + on_value: + then: + - component.update: lcd + - platform: mqtt_subscribe + name: "line2" + id: line2 + topic: theater_lcd/line2 + on_value: + then: + - component.update: lcd + +# ili9486 setup +# http://www.lcdwiki.com/3.5inch_Arduino_Display-UNO +# (https://www.aliexpress.com/item/4000055026873.html $12) +# and https://circuits4you.com/wp-content/uploads/2018/12/ESP32-Pinout.jpg +# +# GND - GND Power ground +# 5V - 5V 5V power input +# NC - 3V3 3.3V power input, this pin can be disconnected +# GND - LCD_RST LCD bus reset signal, low level reset +# +# GPIO16 - LCD_CS LCD bus chip select signal, low level enable +# +# GPIO17 - LCD_RS LCD bus command / data selection signal, low level: command, high level: data +# GPIO5 - LCD_WR LCD bus write signal +# GPIO18 - LCD_RD LCD bus read signal + +# GPIO33 - LCD_D0 LCD 8-bit data Bit0 +# GPIO32 - LCD_D1 LCD 8-bit data Bit1 +# GPIO13 - LCD_D2 LCD 8-bit data Bit2 +# GPIO12 - LCD_D3 LCD 8-bit data Bit3 +# GPIO14 - LCD_D4 LCD 8-bit data Bit4 +# GPIO27 - LCD_D5 LCD 8-bit data Bit5 +# GPIO26 - LCD_D6 LCD 8-bit data Bit6 +# GPIO25 - LCD_D7 LCD 8-bit data Bit7