Uvanlig kombinasjonslås på Arduino

Arduino er det beste systemet for kopiering av utstyr. De fleste ideer ville ikke vært mulig uten henne. I lang tid har det vært en slik ide: å lage en spesiell kombinasjonslås for arduino. For å åpne den, må du holde nede en bestemt tast. I dette tilfellet skal låsen ikke åpne, selv om du vet riktig knapp. For å åpne den, er det nødvendig å tåle visse intervaller ved bruk av muskelminne. En slik kriminell vil ikke kunne begå. Men dette er bare en teori.

For å sette sammen det må du bruke en spesiell enhet med rektangulære pulser, i tillegg til flere tellere og en haug. Men den ferdige enheten ville ha store overordnede dimensjoner og det ville være upraktisk å bruke. Som regel hjemsøker slike tanker. Det første trinnet i realiseringen av en drøm var å lage et program for Arduino. Det vil fungere som en kombinasjonslås. For å åpne den, må du trykke på ikke én tast, men flere, og gjøre det samtidig. Det ferdige opplegget ser slik ut:

Kodelås

Bildekvaliteten er ikke den beste, men forbindelsen er laget til bakken, D3, D5, D7, D9 og D11.

Koden presenteres nedenfor:

const int ina = 3;







const int inb = 5;







const int øker = 9;







const int ledPin = 13;







int i = 1000;







byte a = 0;







byte b = 0;







byte c = 0;







byte d = 0;







usignert lang tid = 0; // ikke glem alt som tar verdien millis ()







usignert lang temp = 0; // lagre i usignert lenge







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 oppsett () {







pinMode (ina, INPUT_PULLUP); // 3 innganger koblet til knapper







pinMode (inb, INPUT_PULLUP);







pinMode (inc, INPUT_PULLUP);







pinMode (ledPin, OUTPUT); // innebygd LED på den 13. pinnen







pinMode (7, UTGANG);







pinMode (11, UTGANG);







digitalWrite (7, LAV); // erstatte jorden







digitalWrite (11, LAV);







tid = millis (); // trengte å telle 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 () {







if (k == 0) {







blinktwice (); // spør etter kode







}







hvis (k == 8) {







digitalWrite (ledPin, HIGH);







forsinkelse (3000);







k er 0;







}







a = digitalLes (ina); // lese signalnivåer fra knapper - trykket / ikke trykket







b = digitalRead (inb);







c = digitallesning (inc);







forsinkelse (100); // neste hvis - beskyttelse mot falske positiver, kan du ikke bruke







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) {







tid = millis ();







d ++;







}







}







temp = millis ();







temp = temp - tid;







if (temp> 10000) {







k er 0;







d er 0;







tid = millis ();







}







}




For å unngå unødvendige spørsmål om koden, bør noen punkter avklares. Oppsettfunksjonen brukes til å tilordne porter. Den neste funksjonen er Input_Pullup, som er nødvendig for å øke pinnespenningen med 5 V. Dette gjøres ved å bruke en motstand. På grunn av dette vil ikke forskjellige kortslutninger oppstå. For større bekvemmelighet anbefales det å bruke blinktwice-funksjonen. Generelt sett, når du lager forskjellige programmer, må du prøve andre funksjoner.

Etter at funksjonene er tildelt, leses signalet fra portene. Hvis du trykker på knappen, vil den indikeres med tallet 1, og hvis ikke - 2. Neste, en analyse av alle verdiene. For eksempel var det en kombinasjon som 0,1,1. Dette betyr at den første tasten trykkes og de to andre ikke. Hvis alle verdier er sanne, er tilstand 8 også sann. Dette fremgår av en tent LED på frontpanelet. Deretter må du oppgi en spesifikk kode som skal tjene til å åpne døren.

De siste kodeelementene brukes til å tilbakestille telleverdiene. En slik funksjon utføres hvis mer enn 10 sekunder har gått siden forrige tastetrykk.Uten denne koden kan du gå gjennom alle mulige alternativer, selv om det er mange av dem. Etter å ha opprettet denne enheten, må du teste den.

 

(3 stemmer)
Laster ...

Legg til en kommentar