Poté, co jsme si ukázali funkčnost několik samostatných modulů, zkusíme je opět zkombinovat a vytvořit něco trochu interaktivního a praktického. V této lekci použijeme I²C LCD displej, modul relé a klávesnici. Naším cílem bude sestavit jednoduchý číselný zámek, který by bylo možné použít pro bezpečnostní dveře.
Novým prvkem této lekce je maticová klávesnice 4×4. Princip její funkce je naznačena na následujícím obrázku. V principu jde o „šikovně“ zapojené spínače mezi vodiči R1–R4, které odpovídají řádkám a vodiči C1–C4, které naopak odpovídají sloupcům. Je to podobný způsob propojení, jako bylo v případě zobrazovací LED matice 8×8, kterou jsme poznali v jedné z předešlých lekcí. Každý spínač spojuje právě jeden vodič R s vodičem C. Podle toho, které konkrétní vodiče R a C stisknutím spínače propojíme, poznáme stisknuté tlačítko.
Jak jsme naznačili, naším úkolem je vyrobit číselný (kódový) zámek. V programu tedy nastavíme heslo (např. 123456). Pomocí zadávání na klávesnici zadáme vstupní kód. Pokud se bude shodovat s naším heslem, sepne relé, jinak zůstane zámek zamčený. Samotné zadávání kódu bude probíhat tak, že jej spustíme stiskem hvězdičky *. Naopak konec pro zadání hesla potvrdíme křížkem #.
Pochopitelně chceme, aby zámek s uživatelem komunikoval, k tomu použijeme LCD displej. Na začátku je na displeji úvodní hláška „Vitejte!“. Po zadání hesla se na displeji kupříkladu objeví „Spravne zadano!“ „Prosim, vstupte!“, nebo se naopak zobrazí „Vstupní chyba!“ „Prosim, zkus znovu!“. Po uplynutí dvou sekund se na displeji objeví úvodní hláška „Vitejte!“
Krok 1: Sestavíme si obvod podle následujícího obrázku nebo schématu. I²C LCD displej připojíme stejně, jako v předešlých lekcích. Propojení modulu Arduino s ostatními komponentami je uvedeno v tabulkách.
Blokové schéma
Elektronické schéma
klávesnice 4×4 | modul Arduino |
---|---|
C1 | 7 |
C2 | 6 |
C3 | 5 |
C4 | 4 |
R1 | 11 |
R2 | 10 |
R3 | 9 |
R4 | 8 |
modul relé | modul Arduino |
---|---|
S | 13 |
+ | 5V |
GND | GND |
I²C LCD1602 | modul Arduino | |
---|---|---|
UNO | Mega | |
SDA | A4 | 20 |
SCL | A5 | 21 |
UCC | 5V | 5V |
GND | GND | GND |
Krok 2: V prostředí mBlock vytvoříme následující program. Při tvorbě programu je třeba znát adresu použitého I²C LCD displeje, neboť u každého příkazů pro LCD je třeba nastavit aktuální adresu. (viz rozbalovací pole „adr.“).
Program lze stáhnout z:
http://
První část programu je opět věnována prvotnímu nastavení, jako je nastavení parametrů použitého LCD displeje. Za zmínku stojí dva okrové programové bloky, které se zabývají inicializací klávesnice. První blok slouží pro nastavení ovládacích pinů při řádky a sloupce, druhý provede inicializaci klávesnice, čímž se zadané piny nastaví tak, aby mohla být klávesnice vyhodnocována. Pokud bychom se rozhodli změnit rozložení klávesnice, jak jsme se zmínili dříve, musíme to učinit ještě před inicializací klávesnice. Proto mezi bloky pro nastavení pinů a blok inicializace bychom museli vložit následující bloky (červeně orámováno) s předefinováním jednotlivých míst – sloupec, řádek.
V hlavní nekonečné smyčce „opakuj stále“ se nejdříve načte stav klávesnice. Pokud je nějaká klávesa stisknuta, je její hodnota načtena. Programový blok načítání klávesnice nevrací souřadnici zmáčknuté klávesy (sloupec, řádek), ale rovnou její hodnotu (dle standardního rozložení, nebo předefinování). Získaná hodnota stisknuté klávesy je vypsána na LDC displej, aby byla vidět odezva pro uživatele. Následuje série podmínek, která testuje hned několik možností reakcí na stisknutou klávesu.
Zaprvé, pokud je stisknuta klávesa *, dojde ke smazání displeje a k výpisu uvítacího dialogu, taktéž dojde k vynulování textové proměnné pro uložení zadaného hesla a stav „probuzení“ zámku se v programu signalizuje uložením hodnoty 1 do proměnné hvězdička.
Pokud byla stisknuta klávesa #, došlo k potvrzení vstupního hesla. Dojde k porovnání proměnné s hodnotou zadaného hesla s proměnnou obsahující platné heslo. Pokud dojde ke shodě, následuje nastavení digitálního výstupu pro sepnutí relé a výpis hlášky na LCD. Pokud se hesla neshodují, dojde jen k výpisu patřičné hlášky na LCD. Zároveň se v obou případech vynuluje proměnné hvezdicka, čímž se zámek opět uvede do standardního vyčkávacího režimu.
Třetí podmínka nastává, pokud byla stisknutá jiná klávesa než * nebo #. Podle stavu hodnoty proměnné hvezdicka se buď neprovede nic (nebyla stisknuta počáteční hvězdička, zámek tedy nereaguje), nebo se zadaná klávesa připojí k textové proměnné pro zadané heslo. A to dokud nedojde k potvrzení hesla klávesou #.
Krok 3: Zkompilujeme kód a nahrajeme do modulu Arduino tlačítkem .
Krok 4: Po spuštění programu se na displeji objeví „Vitejte!“. Relé (zámek) je pochopitelně zavřený, což poznáme, protože vestavěná LED modulu Arduino zůstane zhaslá. Pokud stiskneme na klávesnici tlačítko *, objeví se pokyn „Zadej sve heslo“. Když zadáme 123456 a potvrdíme #, rozsvítí se vestavěná LED, relé sepne a na displeji se objeví: „SPRAVNE!“ „Vstupte!“. Při zadání nesprávného hesla se objeví na displeji „CHYBA!“ „Zkus to znova“ a relé zůstane v původním stavu. O dvě vteřiny později se na displeji opět objeví úvodní hláška „Vitej!“ a zámek čeká na nové zadání kódu.