Arduino kombinirana brava - shema

click fraud protection

Arduino je najbolji sustav za kopiranje bilo kojeg hardvera. Većina ideja ne bi bila moguća bez nje. Dugo je postojala takva misao: stvoriti posebnu bravu s kombinacijom na arduinu. Da biste ga otvorili, morate držati pritisnutu određenu tipku. U tom slučaju, brava se ne bi trebala otvoriti, čak i ako znate željeni gumb. Da biste ga otvorili, potrebno je održavati određene intervale koristeći mišićnu memoriju. Takav zločinac ne može. Ali ovo je sve samo teorija.

Da biste ga prikupili, morate koristiti poseban uređaj za pravokutne impulse, kao i nekoliko brojača i hrpu. Ali gotov uređaj bi imao velike dimenzije i bio bi nezgodan za korištenje. Takve misli u pravilu ne daju odmora. Prvi korak u ostvarenju ovog sna bilo je stvaranje programa za Arduino. Ona će poslužiti kao brava s kombinacijom. Da biste ga otvorili, morate pritisnuti ne jednu tipku, već nekoliko i to učiniti istovremeno. Gotov krug izgleda ovako:

Kvaliteta slike nije najbolja, ali spojevi su napravljeni na masu, D3, D5, D7, D9 i D11.

Kod je prikazan u nastavku:

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; neoznačeno dugo vrijeme = 0; // nemoj zaboraviti sve što millis () preuzima na unsigned long temp = 0; // pohraniti u nepotpisani dugi bajt keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // kodira pravilan byte keyb [] = {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 ulaza spojena na tipke pinMode (inb, INPUT_PULLUP); pinMode (inc, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // ugrađena LED na pin 13 pinMode (7, IZLAZ); pinMode (11, IZLAZ); digitalWrite (7, LOW); // zamjenjuje temelj digitalWrite (11, LOW); vrijeme = mili (); // potrebno za brojanje vremena} void blinktwice () {// dvostruko treptanje LED digitalWrite (ledPin, HIGH); kašnjenje (100); digitalWrite (ledPin, LOW); kašnjenje (100); digitalWrite (ledPin, HIGH); kašnjenje (100); digitalWrite (ledPin, LOW); kašnjenje (200); } void petlja () {if (k == 0) {blinktwice (); // upit za unos koda} if (k == 8) {digitalWrite (ledPin, HIGH); kašnjenje (3000); k = 0; } a = digitalRead (ina); // razine signala se čitaju s tipki - pritisnuto / nije pritisnuto b = digitalRead (inb); c = digitalRead (inc); kašnjenje (100); // sljedeći if - zaštita od lažnih pozitivnih rezultata, ne morate koristiti if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {if (a == keya [k]) {if (b == keyb [k]) {if (c = = tipka [k]) {k ++; }}}} if (k == 1) {if (d == 0) {vrijeme = millis (); d ++; }} temp = millis (); temp = temp - vrijeme; ako (temp> 10000) {k = 0; d = 0; vrijeme = mili (); } } 


Kako se ne bi postavljala nepotrebna pitanja o kodu, neke točke treba razjasniti. Funkcija postavljanja koristi se za dodjelu portova. Sljedeća funkcija je Input_Pullup, koja je potrebna za povećanje napona pina za 5 V. To se radi pomoću otpornika. Zbog toga neće doći do raznih kratkih spojeva. Za veću praktičnost, preporuča se korištenje funkcije blinktwice. Općenito, kada stvarate razne programe, morate isprobati druge funkcije.

Nakon dodjele funkcija, signal se čita s portova. Ako je tipka pritisnuta, tada će biti označena brojem 1, a ako nije - 2. Nadalje, analiziraju se sve vrijednosti. Na primjer, pojavila se kombinacija poput 0,1,1. To znači da je prva tipka pritisnuta, a druge dvije nisu. Ako su sve vrijednosti istinite, tada je i uvjet 8 istinit. O tome svjedoči osvijetljena LED dioda na prednjoj ploči. Zatim morate unijeti određeni kod koji će poslužiti za otvaranje vrata.

Posljednji elementi koda koriste se za poništavanje vrijednosti brojača. Ova funkcija se izvodi ako je prošlo više od 10 sekundi od zadnjeg pritiska na tipku. Bez ovog koda bilo je moguće nabrojati sve moguće opcije, iako ih ima poprilično. Nakon izrade ovog uređaja morate ga testirati. Još Arduino projekti.

Kao(0)ne sviđa mi se(0)

instagram viewer