Neobvyklý kombinační zámek na Arduino

Arduino je nejlepší systém pro kopírování jakéhokoli zařízení. Bez ní by většina nápadů nebyla možná. Dlouho se objevil takový nápad: vytvořit speciální kombinační zámek pro arduino. Chcete-li jej otevřít, musíte podržet určitou klávesu. V tomto případě by se zámek neměl otevřít, i když znáte pravé tlačítko. Pro jeho otevření je nutné vydržet určité intervaly pomocí svalové paměti. Takový zločinec se nebude moci dopustit. Ale to je jen teorie.

Chcete-li jej sestavit, musíte použít speciální zařízení obdélníkových pulzů, stejně jako několik čítačů a hromadu. Hotové zařízení by však mělo velké celkové rozměry a použití by bylo nevhodné. Tyto myšlenky zpravidla pronásledují. Prvním krokem při realizaci snu bylo vytvoření programu pro Arduino. Bude sloužit jako kombinovaný zámek. Chcete-li jej otevřít, budete muset stisknout ne jednu klávesu, ale několik, a to současně. Dokončené schéma vypadá takto:

Kombinovaný zámek

Kvalita obrazu není nejlepší, ale připojení je provedeno na zemi, D3, D5, D7, D9 a D11.

Kód je uveden níže:

const int ina = 3;







const int inb = 5;







const int inc = 9;







const int ledPin = 13;







int i = 1000;







byte a = 0;







byte b = 0;







byte c = 0;







byte d = 0;







nepodepsaný dlouhý čas = 0; // nezapomeňte na vše, co bere hodnotu milis ()







nepodepsaná dlouhá teplota = 0; // uložte dlouho bez znaménka







byte keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // kódy







byte keyb [] = {1, 1, 1, 1, 0, 1, 0, 0};







byte keyc [] = {1, 0, 1, 0, 1, 1, 1, 0};







byte k = 0;







 







neplatné nastavení () {







pinMode (ina, INPUT_PULLUP); // 3 vstupy připojené k tlačítkům







pinMode (inb, INPUT_PULLUP);







pinMode (inc, INPUT_PULLUP);







pinMode (ledPin, OUTPUT); // vestavěná LED na 13. kolíku







pinMode (7, VÝSTUP);







pinMode (11, VÝSTUP);







digitalWrite (7, LOW); // vyměňte zemi







digitalWrite (11, LOW);







time = millis (); // potřeba počítat čas







}







 







void blinktwice () {// dvakrát blikající LED







digitalWrite (ledPin, HIGH);







zpoždění (100);







digitalWrite (ledPin, LOW);







zpoždění (100);







digitalWrite (ledPin, HIGH);







zpoždění (100);







digitalWrite (ledPin, LOW);







zpoždění (200);







}







 







void loop () {







if (k == 0) {







blinktwice (); // výzva k zadání kódu







}







if (k == 8) {







digitalWrite (ledPin, HIGH);







zpoždění (3000);







k je 0;







}







a = digitalRead (ina); // čtení úrovně signálu z tlačítek - stisknuto / nestisknuto







b = digitalRead (inb);







c = digitalRead (inc);







zpoždění (100); // next if - ochranu proti falešným pozitivům, které nemůžete použít







if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {







if (a == keya [k]) {







if (b == keyb [k]) {







if (c == keyc [k]) {







 







k ++;







}







}







}







}







if (k == 1) {







if (d == 0) {







time = millis ();







d ++;







}







}







temp = millis ();







temp = temp - čas;







if (temp> 10 000) {







k je 0;







d je 0;







time = millis ();







}







}




Abychom se vyhnuli zbytečným otázkám ohledně kódu, je třeba některé body vyjasnit. Funkce nastavení se používá k přiřazení portů. Další funkcí je Input_Pullup, což je nutné ke zvýšení napětí pinů o 5 V. To se provádí pomocí rezistoru. Z tohoto důvodu nedojde k různým zkratům. Pro větší pohodlí doporučujeme používat funkci blinktwice. Obecně platí, že při vytváření různých programů musíte vyzkoušet jiné funkce.

Po přiřazení funkcí je signál načten z portů. Pokud je tlačítko stisknuto, bude označeno číslem 1, a pokud ne - 2. Dále, analýza všech hodnot. Například byla taková kombinace jako 0,1,1. To znamená, že je stisknuto první tlačítko a zbývající dvě nejsou. Pokud jsou všechny hodnoty pravdivé, pak platí i podmínka 8. O tom svědčí rozsvícená LED na předním panelu. Dále musíte zadat konkrétní kód, který bude sloužit k otevření dveří.

Poslední prvky kódu se používají k resetování hodnot čítače. Tato funkce se provádí, pokud od posledního stisknutí tlačítka uplynulo více než 10 sekund.Bez tohoto kódu byste mohli projít všemi možnými možnostmi, i když jich je spousta. Po vytvoření tohoto zařízení jej musíte vyzkoušet.

 

(3 hlasy)
Načítám ...

Přidejte komentář