Stránka 1 z 1
Teploměr správné zobrazení nad 100°C
Napsal: 24 zář 2018, 10:38
od karel
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
Re: Teploměr správné zobrazení nad 100°C
Napsal: 24 zář 2018, 17:59
od rejze69
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?
Re: Teploměr správné zobrazení nad 100°C
Napsal: 24 zář 2018, 18:19
od pavel1tu
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 ....
Re: Teploměr správné zobrazení nad 100°C
Napsal: 25 zář 2018, 15:52
od karel
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
Re: Teploměr správné zobrazení nad 100°C
Napsal: 25 zář 2018, 18:58
od AstroMiK
A nebylo to přehlednější takhle?
(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.)