Kombinirana ključavnica Arduino - shema

click fraud protection

Arduino je najboljši sistem za kopiranje katere koli strojne opreme. Večina idej ne bi bila mogoča brez nje. Že dolgo obstaja taka misel: ustvariti posebno kombinacijsko ključavnico na arduinu. Če ga želite odpreti, morate držati določeno tipko. V tem primeru se ključavnica ne sme odpreti, tudi če poznate želeni gumb. Za odpiranje je potrebno vzdrževati določene intervale z uporabo mišičnega spomina. Takšen zločinec ne more storiti. Ampak to je vse le teorija.

Če ga želite zbrati, morate uporabiti posebno napravo za pravokotne impulze, pa tudi več števcev in kup. Toda končna naprava bi imela velike dimenzije in bi bila neprijetna za uporabo. Takšne misli praviloma ne dajejo počitka. Prvi korak k uresničitvi teh sanj je bila izdelava programa za Arduino. Prav ona bo služila kot kombinacijska ključavnica. Če ga želite odpreti, morate pritisniti ne eno tipko, ampak več in to storiti hkrati. Končni krog izgleda takole:

Kakovost slike ni najboljša, vendar so povezave ozemljene, D3, D5, D7, D9 in D11.

Koda je prikazana spodaj:

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; nepodpisani dolgi čas = 0; // ne pozabite na vse, kar millis () prevzame brez predznaka long temp = 0; // shrani v nepodpisani dolgi bajt keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // kodira pravilno bajtno tipkob [] = {1, 1, 1, 1, 0, 1, 0, 0}; byte keyc [] = {1, 0, 1, 0, 1, 1, 1, 0}; bajt k = 0; void setup () {pinMode (ina, INPUT_PULLUP); // 3 vhodi povezani z gumbi pinMode (inb, INPUT_PULLUP); pinMode (inc, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // vgrajena LED na pin 13 pinMode (7, IZHOD); pinMode (11, IZHOD); digitalWrite (7, LOW); // zamenjamo ozemljitev digitalWrite (11, LOW); čas = milisekund (); // potreben za štetje časa} void blinktwice () {// dvojno utripanje LED digitalWrite (ledPin, HIGH); zamuda (100); digitalWrite (ledPin, LOW); zamuda (100); digitalWrite (ledPin, HIGH); zamuda (100); digitalWrite (ledPin, LOW); zamuda (200); } void loop () {if (k == 0) {blinktwice (); // poziv za vnos kode} if (k == 8) {digitalWrite (ledPin, HIGH); zamuda (3000); k = 0; } a = digitalno branje (ina); // nivoji signala se berejo iz gumbov - pritisnjeno / ne pritisnjeno b = digitalRead (inb); c = digitalRead (inc); zamuda (100); // naslednja if - zaščita pred napačnimi rezultati, ni vam treba uporabiti if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {if (a == keya [k]) {if (b == keyb [k]) {if (c = = tipka c [k]) {k ++; }}}} if (k == 1) {if (d == 0) {čas = millis (); d ++; }} temp = millis (); temp = temp - čas; če (temp> 10000) {k = 0; d = 0; čas = milisekund (); } } 


Da ne bi postavljali nepotrebnih vprašanj o kodeksu, je treba nekatere točke pojasniti. Funkcija nastavitve se uporablja za dodeljevanje vrat. Naslednja funkcija je Input_Pullup, ki je potrebna za povečanje napetosti zatiča za 5 V. To se naredi s pomočjo upora. Zaradi tega ne bo prišlo do različnih kratkih stikov. Za večjo udobje je priporočljivo uporabiti funkcijo dvakrat utripa. Na splošno morate pri ustvarjanju različnih programov preizkusiti druge funkcije.

Po dodelitvi funkcij se signal prebere iz vrat. Če je gumb pritisnjen, bo označen s številko 1, če ne - 2. Nadalje se analizirajo vse vrednosti. Pojavila se je na primer kombinacija, kot je 0,1,1. To pomeni, da je prva tipka pritisnjena, drugi dve pa ne. Če so vse vrednosti resnične, je resničen tudi pogoj 8. To dokazuje osvetljena LED dioda na sprednji plošči. Nato morate vnesti posebno kodo, ki bo služila za odpiranje vrat.

Zadnji elementi kode se uporabljajo za ponastavitev vrednosti števcev. Ta funkcija se izvede, če je od zadnjega pritiska na tipko minilo več kot 10 sekund. Brez te kode je bilo mogoče našteti vse možne možnosti, čeprav jih je kar nekaj. Ko ustvarite to napravo, jo morate preizkusiti. Pa vendar Arduino projekti.

Všeč mi je(0)ne maram(0)

instagram viewer