Ovanligt kombinationslås på Arduino

Arduino är det bästa systemet för kopiering av utrustning. De flesta idéer hade inte varit möjliga utan henne. Under en lång tid har det funnits en sådan idé: att skapa ett speciellt kombinationslås för arduino. För att öppna den måste du hålla in en viss tangent. I det här fallet bör låset inte öppnas, även om du vet rätt knapp. För att öppna den är det nödvändigt att motstå vissa intervall med muskelminne. En sådan brottsling kommer inte att kunna begå. Men detta är bara en teori.

För att montera det måste du använda en speciell enhet med rektangulära pulser, såväl som flera räknare och en hög. Men den färdiga enheten skulle ha stora övergripande dimensioner och det skulle vara olämpligt att använda. Som regel följer sådana tankar. Det första steget i förverkligandet av en dröm var att skapa ett program för Arduino. Det kommer att fungera som ett kombinationslås. För att öppna den, måste du trycka på inte en knapp, utan flera, och göra det samtidigt. Det färdiga schemat ser ut så här:

Kombinationslås

Bildkvaliteten är inte den bästa, men anslutningen görs till marken, D3, D5, D7, D9 och D11.

Koden presenteras nedan:

const int ina = 3;







const int inb = 5;







const int ink = 9;







const int ledPin = 13;







int i = 1000;







byte a = 0;







byte b = 0;







byte c = 0;







byte d = 0;







osignerad lång tid = 0; // glöm inte allt som tar ett millis () värde







osignerad lång temp = 0; // lagra i osignerad länge







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







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







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







byte k = 0;







 







ogiltig installation () {







pinMode (ina, INPUT_PULLUP); // 3 ingångar anslutna till knappar







pinMode (inb, INPUT_PULLUP);







pinMode (inc, INPUT_PULLUP);







pinMode (ledPin, OUTPUT); // inbyggd LED på den 13: e stiftet







pinMode (7, OUTPUT);







pinMode (11, OUTPUT);







digitalWrite (7, LÅG); // ersätt jorden







digitalWrite (11, LÅG);







tid = millis (); // behövde räkna tid







}







 







void blinktwice () {// dubbel blinkande LED







digitalWrite (ledPin, HIGH);







fördröjning (100);







digitalWrite (ledPin, LOW);







fördröjning (100);







digitalWrite (ledPin, HIGH);







fördröjning (100);







digitalWrite (ledPin, LOW);







fördröjning (200);







}







 







void loop () {







if (k == 0) {







blinktwice (); // fråga om kod







}







if (k == 8) {







digitalWrite (ledPin, HIGH);







fördröjning (3000);







k är 0;







}







a = digitalRead (ina); // läs signalnivåer från knappar - tryckt / inte tryckt







b = digitalRead (inb);







c = digitalRead (inc);







fördröjning (100); // nästa if - skydd mot falska positiver, du kan inte använda







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 är 0;







d är 0;







tid = millis ();







}







}




För att undvika onödiga frågor om koden bör vissa punkter klargöras. Inställningsfunktionen används för att tilldela portar. Nästa funktion är Input_Pullup, vilket är nödvändigt för att öka stiftspänningen med 5 V. Detta görs med ett motstånd. På grund av detta inträffar inte olika kortslutningar. För större bekvämlighet rekommenderas det att använda blinktwice-funktionen. Generellt sett måste du prova andra funktioner när du skapar olika program.

Efter tilldelning av funktioner läses signalen från portarna. Om knappen trycks in, kommer den att visas med siffran 1, och om inte - 2. Därefter en analys av alla värden. Till exempel fanns en sådan kombination som 0,1,1. Detta innebär att man trycker på den första knappen och de andra två inte. Om alla värden är sanna, är tillstånd 8 också sant. Detta bevisas av en tänd LED på frontpanelen. Därefter måste du ange en specifik kod som ska fungera för att öppna dörren.

De sista kodelementen används för att återställa räknarvärdena. En sådan funktion utförs om mer än 10 sekunder har gått sedan det senaste tangenttrycket.Utan den här koden kan du gå igenom alla möjliga alternativ, även om det finns många av dem. När du har skapat den här enheten måste du testa den.

 

(3 röster)
Hämtar ...

Lägg till en kommentar