Ahoj, dodělávám teploměr s MAX7219 s měřením teploty do cca 115°C. Mám problém jak ošetřit program při zobrazení - měření nad 100°C. Jedná se o 3 segmenty MAX7219. Do 99°C není problém, aby každý segment ukazoval svůj řád, ale jak nad 100°C?
......
segment1 = teplota / 10; //
segment2 = teplota - (segment1*10); //
segment3 = teplota / 100; //
......
Dík za radu
Teploměr správné zobrazení nad 100°C
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Re: Teploměr správné zobrazení nad 100°C
Trochu to upřesni.Do proměnné segment se ukládá celý výsledný číslo k zobrazení? Vzhledem k tomu,že na levé pozici se bude yobrazovat jedině jednička,tak by mělo stačit segment2+100 ne?
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: Teploměr správné zobrazení nad 100°C
Pokud to chápu, s tím MAX.... komunikuješ tak, že mu řekneš od které pozice má co vypsat ? nebo přímo na který segment má co vypsat ?
beru zpět podle příkladu v knikovně se zapisuje každý digit zvlášť - tak to máš vymyšlené dobře, ne ?
Jen bych přidal podmínku aby se SEGMENT desítek nevypisoval pod 10st.C (byla by tam nula) a to samé stovky ....
beru zpět podle příkladu v knikovně se zapisuje každý digit zvlášť - tak to máš vymyšlené dobře, ne ?
Jen bych přidal podmínku aby se SEGMENT desítek nevypisoval pod 10st.C (byla by tam nula) a to samé stovky ....
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Teploměr správné zobrazení nad 100°C
Je to tam trošku přehozené, ale
seg1 - ukazuje desítky
seg2 - jednotky
seg3 - stovky °C
při stoupající teplotě nad 99°C dělal zobrazovač problém, že nespočital jedno číslo seg1. (110°C -->11)
Ošetřil jsem to takto
-------------
if (teplota > 99) segment2 = 0;
if (teplota > 109) segment2 = 1;
if (teplota > 119) segment2 = 2;
--------------
asi by to šlo jinak a lépe, ale takto to funguje dobře, aspoň myslím
seg1 - ukazuje desítky
seg2 - jednotky
seg3 - stovky °C
při stoupající teplotě nad 99°C dělal zobrazovač problém, že nespočital jedno číslo seg1. (110°C -->11)
Ošetřil jsem to takto
-------------
if (teplota > 99) segment2 = 0;
if (teplota > 109) segment2 = 1;
if (teplota > 119) segment2 = 2;
--------------
asi by to šlo jinak a lépe, ale takto to funguje dobře, aspoň myslím
Re: Teploměr správné zobrazení nad 100°C
A nebylo to přehlednější takhle?
(segmenty jsem přejmenoval tak, aby bylo na první pohled vidět, ke kterému řádu patří)
Pro více segmentů by to šlo rozšířit takhle:
(Funguje to jen pro kladné teploty. U záporných se musí hodnota převést na kladnou a na displeji rozsvítit mínus.)
(segmenty jsem přejmenoval tak, aby bylo na první pohled vidět, ke kterému řádu patří)
Kód: Vybrat vše
byte segment_1 = teplota % 10;
byte segment_10 = (teplota % 100) / 10;
byte segment_100 = teplota / 100;
Pro více segmentů by to šlo rozšířit takhle:
Kód: Vybrat vše
byte segment_1 = teplota % 10;
byte segment_10 = (teplota % 100) / 10;
byte segment_100 = (teplota % 1000) / 100;
byte segment_1000 = (teplota % 10000) / 1000;
byte segment_10000 = teplota / 10000;
(Funguje to jen pro kladné teploty. U záporných se musí hodnota převést na kladnou a na displeji rozsvítit mínus.)
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů