Vaším úkolem je vytvořit program pro ovládání bankovního trezoru.
- Trezor pracuje ve dvou různých režimech (Den, nebo Noc) a nachází se v jednom ze dvou stavů (Otevřeno, nebo Zavřeno).
- Otevírání trezoru je řešeno zadáním kódu pomocí rotačního enkodéru s tlačítkem KY-040.
- Zavírání trezoru je řešeno tlačítkem na rotačním enkodéru.
- O stavu a režimu trezoru informuje RGB LED a LCD displej.
- Trezor je připojen na terminál na PC přes sériovou linku. Komunikace na této lince probíhá obousměrně.
- Režim Den/Noc je přepínán spínačem nebo zprávou přes terminál z PC.
- Trezor hlídá senzor otřesů, v režimu Noc navíc i pohybové čidlo.
Přechod mezi režimy a stavy
- Po zapnutí/resetu trezor automaticky přechází do režimu Noc a stavu Zavřeno.
- Mezi režimy Den a Noc se přepíná změnou polohy spínače nebo přijetím zprávy z terminálu.
- Přepnutí režimu nezávisí na poloze spínače, ale na změně polohy spínače.
- Přechod do režimu Noc je možný pouze při zavřeném trezoru.
- Trezor je možné otevřít kódem pro otevření pouze v režimu Den.
- Trezor je možné zavřít podržením tlačítka na rotačním enkodéru po dobu 3 sekund.
LCD
- Režim Den, 1. řádek: uprostřed je zobrazen aktuální stav (
Otevreno
/Zavreno
) nebo alarm (Alarm
).
- Změna zobrazení stavu probíhá tak, že starý stav viditelně odroluje doleva, nový přiroluje zprava a zastaví se uprostřed.
- Režim Den, 2. řádek: slouží k zobrazení zadávaného kódu.
- Režim Noc, 1. řádek: viditelně rolující text zleva doprava
Nocni rezim
.
- Režim Noc, 2. řádek: prázdný.
Zadávání kódu
- Kódy jsou čtyřmístné: Otevření trezoru 5703 nebo 6219, vypnutí alarmu v režimu Den (viz níže) 3497.
- Před zadáváním kódu je 2. řádek LCD prázdný.
- Zadávání kódu v režimu Noc nebo ve stavu Otevřeno se ignoruje.
- Když při zadávání kódu dojde k přepnutí do režimu Noc, zadávání kódu se ukončí a kód se ignoruje. Příští zadání kódu začíná znovu od první číslice.
- Po stisku tlačítka se na pozici prvního znaku rozsvítí 0 a rozbliká kurzor. Číslo na pozici kurzoru lze měnit otáčením enkodéru.
- Zadání číslice na pozici kurzoru se potvrdí stiskem tlačítka enkodéru. Potvrzená číslice je nahrazena znakem *, blikající kurzor se posune o jedno místo doprava a na jeho pozici se znovu zobrazí 0.
- Po potvrzení čtvrté číslice kódu se kód vyhodnotí a druhý řádek se smaže.
- Pokud je zadán špatný kód, nestane se nic.
- Pokud je zadán špatný kód 3× po sobě, spustí se alarm (viz níže).
Alarm
- Čidlo pohybu je aktivní pouze v režimu Noc.
- Při zachycení signálu z čidla pohybu se na terminálu zobrazí
Podezrely pohyb
(max. 1× za sekundu).
- Pokud je pohyb zaznamenán i po třech sekundách od předchozího pohybu, spustí se alarm.
- Senzor otřesu je aktivní trvale mimo stav Otevřeno.
- Při zachycení signálu ze senzoru otřesu se alarm spustí okamžitě a na terminálu se zobrazí
Podezrele otresy!
- Alarm spustí také tři po sobě jdoucí chybné pokusy o zadání kódu pro otevření. Na terminálu se zobrazí
Chybny kod
.
- V režimu Den lze alarm vypnout zadáním kódu (3497).
- V obou režimech lze alarm vypnout prostřednictvím terminálu (viz níže).
- Typ alarmu je indikován také RGB LED (viz níže).
RGB LED
- Režim Den, Stav Zavřeno – svítí zelené světlo.
- Režim Den, Stav Otevřeno – viditelně bliká zelené světlo.
- Režim Den, Alarm – viditelně bliká červené světlo.
- Režim Noc bez Alarmu – svítí modré světlo.
- Režim Noc, detekován podezřelý pohyb, ale není ještě spuštěn alarm – svítí žluté světlo.
- Režim Noc, Alarm – viditelně bliká žluté světlo.
Komunikace s terminálem
- Při zapnutí nebo resetu se na terminálu zobrazí
System pro ovladani trezoru byl aktivovan
.
- Při přechodu do denního režimu se na terminálu zobrazí
Rezim DEN
.
- Při přechodu do nočního režimu se na terminálu zobrazí
Rezim NOC
.
- V režimu Noc se na terminálu zobrazí
Podezrely pohyb
nebo Podezrele otresy!
dle pravidel popsaných výše.
- V režimu Den se na terminálu zobrazí
Chybny kod
dle pravidla popsaného výše.
- Vložením znaku Q z terminálu počítače se vypíná alarm (v režimu Noc je to jediná možnost vypnutí).
- Po vypnutí alarmu se na terminálu zobrazí
Alarm vypnut
.
- Vložením znaku S z terminálu počítače se posílá žádost do trezoru o zaslání informace o režimu a stavu. Trezor odpoví tak, že se na terminálu zobrazí režim a stav.
- Vložením znaku R z terminálu počítače se přepíná režim trezoru. (Ke změně režimu na Noc smí dojít jen tehdy, když je trezor ve stavu Zavřeno.)
Dokumentace a zdrojový kód
Součástí hodnocení je dodržení následujících pravidel:
- Zdrojový kód je formátovaný jednotným způsobem.
- Kód je strukturovaný s využitím odsazování.
- Klíčové části kódu jsou komentované.
- Identifikátory jsou vhodně pojmenované.
- V kódu je uvedeno, jakým způsobem jsou připojeny periferie.
- Změna zapojení pinu by měla vyžadovat změnu na jednom místě kódu.
Pokyny pro upload řešení
Po skončení soutěže svoje řešení nahrajte do cloudu. Adresa je https://svp.proed.cz/, přihlašovací
údaje jste obdrželi na proužku papíru.
Data ukládejte do již vytvořeného adresáře s vaším startovním
číslem – jinam porota nevidí. Pokud vaše řešení sestává z několika
málo souborů, můžete je uploadovat přímo. V opačné případě je prosím
zabalte do formátu .zip
.