O víkendu proběhlo celorepublikové kolo soutěže mládeže v programování. Se Štěpánem Bechynským jsme byli porotci kategorie „mikrořadiče“.
Účastníci dostali Arduino a výukový kit, který používáne na workshopu Arduino101. Na vypracování úlohy měli čtyři hodiny… Chcete s nimi zmřit síly?
[sc:ebay item=“arduino uno USB“] [sc:ebay item=“arduino clock shield TM1636″]
Zadání úlohy pro celostátní kolo kategorie mikrořadiče
Univerzální hlídač lednice
Nové lednice mají velmi často zabudovaný teploměr, takže víte, jestli fungují správně, a když necháte dveře dlouho otevřené, tak začnou pískat. Co ale udělat s lednicí, která takto vybavená není? To je úkol pro Univerzální hlídač lednice (UHL). Vaším úkolem je takovéto zařízení vytvořit. Hardware dostanete připravený a vaším úkolem bude vše naprogramovat.
Funkce UHL je následující: 1. Pokud je lednice otevřená déle než 30 vteřin, tak začne UHL přerušovaně (5 Hz) pískat. Otevření lednice detekujte pomocí fotorezistoru.
-
Při otevření lednice zobrazuje UHL teplotu ve stupních Celsia nebo Fahrenheita, podle toho, co si uživatel naposled zvolil, viz bod 3. Teplota je zaokrouhlena na celé číslo a za teplotou se na displeji zobrazí jednotky, tedy znak C nebo F.
-
Pokud je lednice zavřena, tak se na displeji nic nezobrazuje, aby se šetřila energie.
-
Tlačítkem Menu UHL přepíná mezi zobrazením teploty ve stupních Celsia, Fahrenheita.
-
UHL ukládá maximální a minimální naměřenou teplotu. Tyto hodnoty zůstanou uloženy, i když UHL přijde o napájení, např. při výměně baterie.
-
Ke každému extrému se zároveň uloží i datum a čas. Nezapomeňte proto správně nastavit hodiny.
-
Pomocí tlačítka Up zobrazí UHL maximální naměřenou teplotu a po 10 vteřinách se vrátí na naposled zvolené zobrazení, viz funkce č. 2.
-
Pomocí tlačítka Down zobrazí UHL minimální naměřenou teplotu a po 10 vteřinách se vrátí na naposled zvolené zobrazení, viz funkce č. 2.
-
UHL umí hlídat překročení mezních hodnot teploty. Při překročení minimální nebo maximální teploty se rozblikají všechny LED a na displeji začne blikat hodnota teploty, která je mimo rozsah. Frekvence blikání diod je 10 Hz, frekvence blikání displeje je 1 Hz. Nastavení minimální a maximální teploty se provádí přes sériovou linku. Tyto hodnoty se uchovávají i při odpojení napájení.
-
Po připojení UHL k počítači si mohu některé informace zobrazit nebo nastavit pomocí následujících příkazů přes sériovou linku:
Příkaz (nezáleží na velikosti písmen) | Funkce | Ukázka výstupu | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Maxc | Maximální hodnota ve °C | 2016-01-14 10:32:14 10C | |||||||||
Maxf | Maximální hodnota ve °F | 2016-01-14 10:32:14 50F | |||||||||
Minc | Minimální hodnota ve °C | 2016-01-14 12:02:14 7C | |||||||||
Minf | Minimální hodnota ve °F | 2016-01-14 12:02:14 44F | |||||||||
Delete | Smaže uložené informace | OK nebo ERROR | |||||||||
Allc | Zobrazí minimální a maximální teplotu ve °C |
2016-01-14 12:02:14 7C 2016-01-14 10:32:14 10C |
|||||||||
Allf | Zobrazí minimální a maximální teplotu ve °F |
2016-01-14 12:02:14 44F 2016-01-14 10:32:14 50F |
|||||||||
Setlimitmaxc
Nastaví poplach při překročení maximální teploty
|
OK nebo ERROR
|
</tr>
Setlimitminc |
Nastaví poplach při překročení minumální teploty
|
OK nebo ERROR
|
</tr>
Deletelimitmaxc Vypne hlídání
|
maximální teploty
|
OK nebo ERROR
|
Deletelimitminc Vypne hlídání
|
minimální teploty
|
OK nebo ERROR
|
t[C°]= 5/9.(t[F°]−32) 7. Vzorec pro výpočet teploty. t [°C] – výsledná teplota r [Ω] – odpor termistoru B – konstanta z katalogového listu t[°C]=1 / (log(r[Ω] / 10000) / (B+1) / 298.15)−273.15 * * * Tak co, troufnete si? Soutěžící (12-19 let) se s tím popasovali všelijak. Dva byli výrazně lepší než zbytek, vítěz dokone používal i DDRD a PORTD, nastavil si přerušení,… Na druhé straně konstrukce:switch (flag) { case true: flag = false; break; case false: flag = true; break; }byla velmi neotřelá a ukazovala, že autor možná udělá líp, když se bude věnovat jiným aktivitám 😉 Troufnete si vy? Alespoň koncept… |