Nezvyčajný kombinovaný zámok na Arduino

Arduino je najlepší systém na kopírovanie akéhokoľvek zariadenia. Bez nej by väčšina nápadov nebola možná. Dlho bol taký nápad: vytvoriť špeciálny kombinovaný zámok pre arduino. Ak ju chcete otvoriť, musíte podržať určitý kláves. V takom prípade by sa zámok nemal otvoriť, aj keď poznáte správne tlačidlo. Na jej otvorenie je potrebné vydržať určité intervaly pomocou svalovej pamäte. Takýto zločinec sa nebude môcť dopustiť. Ale to je len teória.

Na jeho zostavenie je potrebné použiť špeciálne zariadenie obdĺžnikových impulzov, ako aj niekoľko počítadiel a hromadu. Hotové zariadenie by však malo veľké celkové rozmery a jeho použitie by bolo nepohodlné. Spravidla takéto myšlienky prenasledujú. Prvým krokom pri realizácii sna bolo vytvorenie programu pre Arduino. Slúži ako kombinovaný zámok. Ak ju chcete otvoriť, musíte stlačiť nie jedno tlačidlo, ale niekoľko klávesov a urobiť to súčasne. Dokončená schéma vyzerá takto:

Kombinovaný zámok

Kvalita obrazu nie je najlepšia, ale spojenie je vykonané so zemou D3, D5, D7, D9 a D11.

Kód je uvedený nižšie:

const int ina = 3;

const int inb = 5;

const int inc = 9;

const int ledPin = 13;

int i = 1000;

bajt a = 0;

bajt b = 0;

bajt c = 0;

bajt d = 0;

dlhá doba bez znamienka = 0; // nezabudnite na všetko, čo má hodnotu millis ()

nepodpísaná dlhá teplota = 0; // ukladať dlho bez znamienka

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};

bajt k = 0;

 

neplatné nastavenie () {

pinMode (ina, INPUT_PULLUP); // 3 vstupy pripojené k tlačidlám

pinMode (inb, INPUT_PULLUP);

pinMode (inc, INPUT_PULLUP);

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

pinMode (7, VÝSTUP);

pinMode (11, VÝSTUP);

digitalWrite (7, LOW); // vymeňte zem

digitalWrite (11, LOW);

čas = millis (); // potrebné na počítanie času

}

 

void blinktwice () {// dvakrát blikajúca LED

digitalWrite (ledPin, HIGH);

oneskorenie (100);

digitalWrite (ledPin, LOW);

oneskorenie (100);

digitalWrite (ledPin, HIGH);

oneskorenie (100);

digitalWrite (ledPin, LOW);

oneskorenie (200);

}

 

void loop () {

ak (k == 0) {

blinktwice (); // výzva na zadanie kódu

}

ak (k == 8) {

digitalWrite (ledPin, HIGH);

oneskorenie (3000);

k je 0;

}

a = digitalRead (ina); // čítanie úrovní signálu z tlačidiel - stlačené / nestlačené

b = digitálne čítanie (inb);

c = digitalRead (inc);

oneskorenie (100); // next if - ochranu pred falošnými pozitívami nemôžete použiť

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

if (a == keya [k]) {

if (b == keyb [k]) {

if (c == keyc [k]) {

 

k ++;

}

}

}

}

ak (k == 1) {

ak (d == 0) {

čas = millis ();

d ++;

}

}

temp = millis ();

temp = temp - time;

if (temp> 10 000) {

k je 0;

d je 0;

čas = millis ();

}

}


Aby sa predišlo zbytočným otázkam týkajúcim sa kódexu, je potrebné objasniť niektoré body. Funkcia nastavenia sa používa na priradenie portov. Ďalšou funkciou je Input_Pullup, ktorá je potrebná na zvýšenie napätia kolíka o 5 V. To sa robí pomocou odporu. Z tohto dôvodu nenastanú rôzne skraty. Kvôli lepšiemu odporúčame používať funkciu blinktwice. Všeobecne platí, že pri vytváraní rôznych programov musíte vyskúšať ďalšie funkcie.

Po priradení funkcií sa signál načíta z portov. Ak je tlačidlo stlačené, bude to indikované číslom 1, a ak nie - 2. Ďalej, analýza všetkých hodnôt. Napríklad existovala taká kombinácia ako 0,1,1. To znamená, že stlačíte prvé tlačidlo a ostatné dve nie. Ak sú všetky hodnoty pravdivé, potom platí aj podmienka 8. Dokazuje to rozsvietená dióda LED na prednom paneli. Ďalej musíte zadať špecifický kód, ktorý bude slúžiť na otvorenie dverí.

Posledné prvky kódu sa používajú na vynulovanie hodnôt počítadla. Táto funkcia sa vykoná, ak od posledného stlačenia tlačidla uplynulo viac ako 10 sekúnd.Bez tohto kódu by ste mohli prejsť všetkými možnými možnosťami, aj keď ich je veľa. Po vytvorení tohto zariadenia ho musíte otestovať.

 

(3 hlasov)
Načítava...

Pridať komentár