Usædvanlig kombinationslås på Arduino

Arduino er det bedste system til kopiering af udstyr. De fleste ideer ville ikke have været muligt uden hende. I lang tid har der været en sådan idé: at skabe en speciel kombinationslås til arduino. For at åbne den skal du holde en bestemt nøgle nede. I dette tilfælde bør låsen ikke åbnes, selvom du kender den rigtige knap. For at åbne det er det nødvendigt at modstå visse intervaller ved hjælp af muskelhukommelse. En sådan kriminel vil ikke være i stand til at begå. Men dette er bare en teori.

For at samle det skal du bruge en speciel enhed med rektangulære pulser, samt flere tællere og en bunke. Men den færdige enhed ville have store samlede dimensioner, og det ville være ubelejligt at bruge. Som regel hjemsøger sådanne tanker. Det første trin i realiseringen af ​​en drøm var oprettelsen af ​​et program til Arduino. Det fungerer som en kombinationslås. For at åbne den, skal du trykke på ikke en tast, men flere, og gøre det samtidig. Den færdige ordning ser sådan ud:

Kombinationslås

Billedkvaliteten er ikke den bedste, men forbindelsen skabes til jorden, D3, D5, D7, D9 og D11.

Koden præsenteres nedenfor:

const int ina = 3;







const int inb = 5;







konst int inc = 9;







konst int ledPin = 13;







int i = 1000;







byte a = 0;







byte b = 0;







byte c = 0;







byte d = 0;







usigneret lang tid = 0; // glem ikke alt, hvad der kræver en millis () værdi







usigneret lang temp = 0; // opbevares i usigneret længe







byte keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // koder faktisk







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







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







byte k = 0;







 







ugyldig opsætning () {







pinMode (ina, INPUT_PULLUP); // 3 indgange tilsluttet knapper







pinMode (inb, INPUT_PULLUP);







pinMode (inc, INPUT_PULLUP);







pinMode (ledPin, OUTPUT); // indbygget LED på den 13. pin







pinMode (7, OUTPUT);







pinMode (11, OUTPUT);







digitalWrite (7, LAV); // udskift jorden







digitalWrite (11, LAV);







tid = millis (); // nødvendigt at tælle tid







}







 







void blinktwice () {// dobbelt blinkende LED







digitalWrite (ledPin, HIGH);







forsinkelse (100);







digitalWrite (ledPin, LOW);







forsinkelse (100);







digitalWrite (ledPin, HIGH);







forsinkelse (100);







digitalWrite (ledPin, LOW);







forsinkelse (200);







}







 







void loop () {







hvis (k == 0) {







blinktwice (); // prompt for code







}







hvis (k == 8) {







digitalWrite (ledPin, HIGH);







forsinkelse (3000);







k er 0;







}







a = digital læse (ina); // læse signalniveauer fra knapper - trykket / ikke trykket







b = digital læse (inb);







c = digital læse (inkl);







forsinkelse (100); // næste hvis - beskyttelse mod falske positiver, kan du ikke bruge







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







if (a == keya [k]) {







if (b == keyb [k]) {







if (c == keyc [k]) {







 







k ++;







}







}







}







}







hvis (k == 1) {







hvis (d == 0) {







tid = millis ();







d ++;







}







}







temp = millis ();







temp = temp - tid;







if (temp> 10000) {







k er 0;







d er 0;







tid = millis ();







}







}




For at undgå unødvendige spørgsmål om koden, skal nogle punkter afklares. Opsætningsfunktionen bruges til at tildele porte. Den næste funktion er Input_Pullup, hvilket er nødvendigt for at øge stiftspændingen med 5 V. Dette gøres ved hjælp af en modstand. På grund af dette forekommer forskellige kortslutninger ikke. For større bekvemmelighed anbefales det at bruge blinktwice-funktionen. Generelt skal du prøve andre funktioner, når du opretter forskellige programmer.

Når funktionerne er tildelt, læses signalet fra porte. Hvis der trykkes på knappen, vises den med nummer 1, og hvis ikke - 2. Derefter en analyse af alle værdier. For eksempel var der en sådan kombination som 0,1,1. Det betyder, at der trykkes på den første knap, og at de to andre ikke er. Hvis alle værdier er rigtige, er betingelse 8 også sand. Dette fremgår af en tændt LED på frontpanelet. Dernæst skal du indtaste en bestemt kode, der tjener til at åbne døren.

De sidste kodeelementer bruges til at nulstille tællerværdierne. En sådan funktion udføres, hvis der er gået mere end 10 sekunder siden det sidste tastetryk.Uden denne kode kan du gennemgå alle mulige muligheder, selvom der er mange af dem. Når du har oprettet denne enhed, skal du teste den.

 

(3 stemmer)
Indlæser ...

Tilføj en kommentar