HD44780 lc celsiustecknet i ha
HD44780 lc celsiustecknet i ha
hållt på att krånga med gamla HD44780 i home assistant
esp32 allt funkar nu förutom att få till celsiustecken efter temperaturen
har provat, googlat, letat hjälp hos AI
grundproblemet är att jag inte förstår programeringsspråket
så här ser delen för lcd ut
display:
- platform: lcd_pcf8574
id: lcd
dimensions: 16x2
address: 0x26
update_interval: 10s
lambda: |-
it.strftime(0, 0,"%H:%M %d.%m.%Y", id(my_time).now());
it.printf(0, 1,"temp ute: %.1f C", id(tempute).state);
skriver ut tid och datum på övre raden och "temp ute: 9.8C" på den undre
skulle vilja ha df enligt bilden på standardtecken
provar mig fram med får inget rätt, förslag?
esp32 allt funkar nu förutom att få till celsiustecken efter temperaturen
har provat, googlat, letat hjälp hos AI
grundproblemet är att jag inte förstår programeringsspråket
så här ser delen för lcd ut
display:
- platform: lcd_pcf8574
id: lcd
dimensions: 16x2
address: 0x26
update_interval: 10s
lambda: |-
it.strftime(0, 0,"%H:%M %d.%m.%Y", id(my_time).now());
it.printf(0, 1,"temp ute: %.1f C", id(tempute).state);
skriver ut tid och datum på övre raden och "temp ute: 9.8C" på den undre
skulle vilja ha df enligt bilden på standardtecken
provar mig fram med får inget rätt, förslag?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: HD44780 lc celsiustecknet i ha
nu när jag fick det att fungera satte jag upp ett par lcd som visar lite värden
men stötte på ytterligare ett problem som jag provad mig runt på
att visa
%
efter rf/rh värde
alla andra tecken funkar, men inte %
gissar att den används för andra sker då dom finns överallt
lambda: |-
it.strftime(0, 0,"%H:%M %d.%m.%Y", id(my_time).now());
it.printf(0, 1,"ute %.1f\xdf", id(tempute).state);
it.printf(10, 1,"%.0f RH", id(rhute).state);
men funkar inte med f\x25
alla runt om funkar 24 26 o.s.v
egenteligen intget problem, skriver RH nu istället för %
funderar bara varför
provat på flera olika lcd för säkerhetsskull, eller rättare sagt, har ett par typer och leker lite innan man spikar allt
men stötte på ytterligare ett problem som jag provad mig runt på
att visa
%
efter rf/rh värde
alla andra tecken funkar, men inte %
gissar att den används för andra sker då dom finns överallt
lambda: |-
it.strftime(0, 0,"%H:%M %d.%m.%Y", id(my_time).now());
it.printf(0, 1,"ute %.1f\xdf", id(tempute).state);
it.printf(10, 1,"%.0f RH", id(rhute).state);
men funkar inte med f\x25
alla runt om funkar 24 26 o.s.v
egenteligen intget problem, skriver RH nu istället för %
funderar bara varför
provat på flera olika lcd för säkerhetsskull, eller rättare sagt, har ett par typer och leker lite innan man spikar allt
Re: HD44780 lc celsiustecknet i ha
det borde nog fungera med %% det är nog standard C printf formateringskoder som används
it.printf(18, 0, "%s%%", "");
såg också någonstans ett exempel med
it.print("Percentage: %s", id(percentage).state.c_str());
dock helt otestat.
it.printf(18, 0, "%s%%", "");
såg också någonstans ett exempel med
it.print("Percentage: %s", id(percentage).state.c_str());
dock helt otestat.
Re: HD44780 lc celsiustecknet i ha
tack det funkade
som sagt, jag förstår mig inte på syntaxen så jag provar mig fram en hel del
Re: HD44780 lc celsiustecknet i ha
Är displayen rätt deklarerad borde väl det fungera att bara använda tecknen man vill ha, det är väl displayens controller som ska sköta om att visa rätt tecken?
Så här kör jag men det är ju en annan display.
Så här kör jag men det är ju en annan display.
Kod: Markera allt
display:
- platform: st7735
model: "INITR_18BLACKTAB"
id: display_1
reset_pin: GPIO26 # Reset-pin för display
cs_pin: GPIO5 # CS-pin för display
dc_pin: GPIO22 # DC-pin för display
rotation: 90 # Rotationsinställning för display
device_width: 128 # Bredd på display
device_height: 160 # Höjd på display
col_start: 0 # Kolumnstart
row_start: 0 # Radstart
eight_bit_color: true # Använder 8-bitars färg
update_interval: 0s # Ingen uppdatering mellan sidor
pages:
- id: page1
lambda: |-
it.printf(0, 0, id(my_font), id(red), "PANNRUM 1");
it.print(it.get_width(), 0, id(my_font), id(blue), TextAlign::TOP_RIGHT, "1(3)");
it.printf(0, 25, id(my_font), id(white), "Temp ute: %.1f C°", id(temp_ute).state);
it.printf(0, 75, id(my_font), id(white), "IP: %s", id(esp32_d1_mini_1_ip_adress).state.c_str());
- id: page2
lambda: |-
it.printf(0, 0, id(my_font), id(red), "PANNA");
it.print(it.get_width(), 0, id(my_font), id(blue), TextAlign::TOP_RIGHT, "2(3)");
it.printf(0, 25, id(my_font), id(white), "Temp: %.1f C°", id(esp32_d1_mini_1_panntemperatur).state);
it.printf(0, 50, id(my_font), id(white), "Rokgas: %.1f C°", id(esp32_d1_mini_1_rokgastemperatur).state);
it.printf(0, 75, id(my_font), id(white), "Framl: %.1f C°", id(esp32_d1_mini_1_framledningstemperatur).state);
it.printf(0, 100, id(my_font), id(white), "Retur: %.1f C°", id(esp32_d1_mini_1_returtemperatur).state);
- id: page3
lambda: |-
it.printf(0, 0, id(my_font), id(red), "PELLETS");
it.print(it.get_width(), 0, id(my_font), id(blue), TextAlign::TOP_RIGHT, "3(3)");
it.printf(0, 25, id(my_font), id(white), "Lager: %.0f kg", id(pellets_lager).state);
it.printf(0, 50, id(my_font), id(white), " %.0f kg/dygn", id(pellets_kg_dygn).state);Re: HD44780 lc celsiustecknet i ha
Så är det ju, problemet här var ju at % är ju "escape tecken" för formateringskoder. Så för att skriva % i texten måste man skriva två %%, ibland är det ju \ som används som escape tecken, skulle kunna var att \% fungerar också. Ska man skriva en \ får man ju dubblera den med \\.
Re: HD44780 lc celsiustecknet i ha
Jovisst är det så, ville bara visa att man inte behöver använda dispayen's teckentabell utan man kan använda "tangentbordets tecken" och sen fixar displayen med rätt "drivrutin" resten.
