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ář