Soutěž v programování – 32. ročník
Krajské kolo 2017/2018
Na řešení úloh máte 4 hodiny čistého času.
Před zahájením soutěže vám pořadatel oznámí, kam máte ukládat řešení úloh. Zároveň připravte pro hodnotícího návod, jak uvést vaše zařízení do provozu a napište, které úlohy jste řešili, a jak mezi nimi přepínat. Hodnotící nebude do zařízení nic nahrávat. Jen ho zapne a vyhodnotí úlohy, na kterých jste pracovali.
LED diody, někdo říká svítivé diody, pokrývají dnes širokou škálu barev. K dispozici je červená, zelená, žlutá, modrá, ale také bílá a IR. A samozřejmě také vykazují nejrůznější elektrické a mechanické parametry. Kdysi začínaly velice skromně. Za spoustu peněz jste si mohli koupit jakoukoliv ledku, tedy pokud jste si přáli malou, červenou. To už dnes není pravda a tak si levně můžete pohrát s led diodami různých barev i velikostí. Proto jsou tolik oblíbené v nejrůznějších hrátkách. Většinou se jedná o nejrůznější blikátka. Ale napadlo vás někdy spočítat, kolik existuje možností jak toto blikání řídit? V následujících úloh si vyzkoušíme čtyři možnosti.
Pro řešení můžete použít vývojovou platformu s mikrokontrolérem dle své preference (Arduino, Raspberry, ESP8266, FRDM, STM32, micro:bit, PicAxe, BASIC Stamp, AVR, PIC …). Pro řešení úlohy budete dále potřebovat:
Máte dva spínače, které vám poskytují čtyři varianty jejich vzájemného sepnutí. Tím získáváte čtyři možnosti, jak se váš program bude chovat a jakou z následujících úloh tak řeší. Váš program musí reagovat na přepnutí i během svého běhu.
Můžete řešit jakékoliv z následujících úloh v libovolném pořadí. Pokud budete řešit více než jednu, musíte zároveň implementovat funkci jejich přepínání.
Maximální počet bodů 16,5
Vytvořte program, který bude řídit semafor pro auta a chodce podle následujících pravidel:
Body | Za co |
---|---|
0 | účastník nedodal nic, dodal zařízení nefunkční |
0,5 | Program přechází do chování Přechod pro chodce řízený semaforem (body se udělí pouze v případě, že účastník řešil více jak jednu úlohu) |
2 | Je splněn počáteční stav periody po přechodu do programu. |
2 | Rozsvícení žluté pro auta ve správný okamžik. |
2 | Rozsvícení červené pro auta ve správný okamžik. |
2 | Rozsvícení zelené pro chodce ve správný okamžik. |
2 | Rozsvícení červené pro chodce ve správný okamžik. |
2 | Rozsvícení žluté (spolu s červenou)) pro auta ve správný okamžik. |
2 | Rozsvícení zelené pro auta ve správný okamžik. |
2 | Při opakovaném stisku tlačítka je vyloučeno blokování aut. |
Maximální počet bodů je 18,5
Vytvořte program, který dovolí ovládání blikajících LED pomocí potenciometru podle následujících pravidel:
Body | Za co |
---|---|
0,5 | Program přechází do chování Blikání řízené napětím (body se udělí pouze v případě, že účastník řešil více jak jednu úlohu). |
3 | Program načítá hodnotu napětí z potenciometru (ledky reagují na otáčení potenciometru). |
2 | Bliká jedna červená ledka při napětí nižším než přibližně 0,2 maximálního. |
1 | Perioda blikání přibližně 2 sekundy při napětí nižším než přibližně 0,2 maximálního. |
2 | Blikají dvě červené ledky při napětí vyšším než přibližně 0,2 maximálního a nižším než přibližně 0,4 maximálního. |
1 | Perioda blikání přibližně 1,5 sekundy při napětí vyšším než přibližně 0,2 maximálního a nižším než přibližně 0,4 maximálního. |
2 | Blikají dvě červené a jedna zelená ledka při napětí vyšším než přibližně 0,4 maximálního a nižším než přibližně 0,6 maximálního. |
1 | Perioda blikání přibližně 2 sekundy při napětí vyšším než přibližně 0,4 maximálního a nižším než přibližně 0,6 maximálního. |
2 | Blikají dvě červené a dvě zelené ledky při napětí vyšším než přibližně 0,6 maximálního a nižším než přibližně 0,8 maximálního. |
1 | Perioda blikání přibližně 1,5 sekundy při napětí vyšším než přibližně 0,6 maximálního a nižším než přibližně 0,8 maximálního. |
2 | Blikají dvě červené, dvě zelené a jedna žlutá ledka při napětí vyšším než přibližně 0,8 maximálního. |
1 | Perioda blikání přibližně 2 sekundy při napětí vyšším než přibližně 0,8 maximálního. |
Maximální počet bodů 8,5
Vytvořte program, který dovolí ovládat rychlost blikání ledek pomocí dvou tlačítek podle následujících pravidel:
Body | Za co |
---|---|
0 | účastník nedodal nic, dodal zařízení nefunkční |
0,5 | Program přechází do chování Blikání řízené tlačítky (body se udělí pouze v případě, že účastník řešil více jak jednu úlohu) |
2 | Je splněn počáteční stav periody po přechodu do programu. |
2 | Je splněna hranice maximální periody. |
1 | Po deseti stiscích tlačítka "plus" je dosaženo přechodu z nejkratší na nejdelší periodu blikání. |
1 | Po deseti stiscích tlačítka "minus" je dosaženo přechodu z nejdelší na nejkratší periodu blikání. |
2 | Jsou ošetřeny zákmity tlačítek. |
Maximální počet bodů 24,5
Vytvořte program, který dovolí ovládání blikajících LED pomocí akcelerometru podle následujících pravidel:
Body | Za co |
---|---|
0 | účastník nedodal nic, dodal zařízení nefunkční |
0,5 | Program přechází do chování Ledky reagující na polohu ruky (body se udělí pouze v případě, že účastník řešil více jak jednu úlohu) |
4 | Program reaguje na změnu polohy akcelerometru. |
2 | Bliká žlutá ledka při sklonu max 30° od horizontální polohy. |
2 | Frekvence blikání při sklonu max 30° od horizontální polohy je přibližně 0,5 Hz. |
2 | Bliká zelená ledka při sklonu 30° až 45° od horizontální polohy. |
2 | Frekvence blikání při sklonu 30° až 45° od horizontální polohy je přibližně 1 Hz. |
2 | Bliká zelená ledka při sklonu 45° až 60° od horizontální polohy. |
2 | Frekvence blikání při sklonu 45° až 60° od horizontální polohy je přibližně 2 Hz. |
2 | Bliká zelená a červená ledka při sklonu 60° až 90° od horizontální polohy. |
2 | Frekvence blikání při sklonu 60° až 90° od horizontální polohy je přibližně 2 Hz. |
2 | Bliká zelená a červená ledka při sklonu větším než 90° od horizontální polohy. |
2 | Frekvence blikání při sklonu větším než 90° od horizontální polohy je přibližně 3 Hz. |