Ongebruikelijk combinatieslot op Arduino

Arduino is het beste systeem om alle apparatuur te kopiëren. De meeste ideeën zouden zonder haar niet mogelijk zijn geweest. Lange tijd was er zo'n idee: een speciaal cijferslot maken voor arduino. Om het te openen, moet je een bepaalde toets ingedrukt houden. In dit geval mag het slot niet openen, ook niet als u de juiste knop kent. Om het te openen, is het noodzakelijk om bepaalde intervallen te weerstaan ​​met spiergeheugen. Zo'n crimineel kan zich niet plegen. Maar dit is slechts een theorie.

Om het te monteren, moet je een speciaal apparaat met rechthoekige pulsen gebruiken, evenals verschillende tellers en een hoop. Maar het voltooide apparaat zou grote totale afmetingen hebben en het zou lastig zijn om te gebruiken. Dergelijke gedachten blijven in de regel achtervolgen. De eerste stap in het realiseren van een droom was het maken van een programma voor Arduino. Het zal dienen als cijferslot. Om het te openen, hoeft u niet op één toets maar op meerdere toetsen te drukken en dit tegelijkertijd te doen. Het afgewerkte schema ziet er als volgt uit:

Combinatieslot

De beeldkwaliteit is niet de beste, maar de verbinding wordt gemaakt met de grond, D3, D5, D7, D9 en D11.

De code wordt hieronder weergegeven:

const int ina = 3;







const int inb = 5;







const int inc = 9;







const int ledPin = 13;







int i = 1000;







byte a = 0;







byte b = 0;







byte c = 0;







byte d = 0;







ongetekende lange tijd = 0; // vergeet niet alles waarvoor een millis () waarde nodig is







ongetekende lange temp = 0; // opslaan in ongetekende lang







byte keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // codes eigenlijk







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







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







byte k = 0;







 







ongeldige setup () {







pinMode (ina, INPUT_PULLUP); // 3 ingangen aangesloten op knoppen







pinMode (inb, INPUT_PULLUP);







pinMode (inc, INPUT_PULLUP);







pinMode (ledPin, OUTPUT); // ingebouwde LED op de 13e pin







pinMode (7, OUTPUT);







pinMode (11, OUTPUT);







digitalWrite (7, LOW); // vervang de aarde







digitalWrite (11, LOW);







tijd = millis (); // nodig om tijd te tellen







}







 







void blinktwice () {// dubbel knipperende LED







digitalWrite (ledPin, HIGH);







vertraging (100);







digitalWrite (ledPin, LOW);







vertraging (100);







digitalWrite (ledPin, HIGH);







vertraging (100);







digitalWrite (ledPin, LOW);







vertraging (200);







}







 







leegte lus () {







als (k == 0) {







blinktwice (); // vraag om code







}







als (k == 8) {







digitalWrite (ledPin, HIGH);







vertraging (3000);







k is 0;







}







a = digitalRead (ina); // lees signaalniveaus van knoppen - ingedrukt / niet ingedrukt







b = digitalRead (inb);







c = digitalRead (inc);







vertraging (100); // volgende als - bescherming tegen false positives, kunt u niet gebruiken







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







if (a == keya [k]) {







if (b == keyb [k]) {







if (c == keyc [k]) {







 







k ++;







}







}







}







}







als (k == 1) {







if (d == 0) {







tijd = millis ();







d ++;







}







}







temp = millis ();







temp = temp - tijd;







if (temp> 10000) {







k is 0;







d is 0;







tijd = millis ();







}







}




Om onnodige vragen over de code te voorkomen, moeten enkele punten worden verduidelijkt. De setup-functie wordt gebruikt om poorten toe te wijzen. De volgende functie is Input_Pullup, wat nodig is om de pinspanning met 5 V te verhogen. Dit wordt gedaan met behulp van een weerstand. Hierdoor zullen verschillende kortsluitingen niet optreden. Voor meer gemak wordt aanbevolen om de blinktwice-functie te gebruiken. Over het algemeen moet u bij het maken van verschillende programma's andere functies proberen.

Nadat de functies zijn toegewezen, wordt het signaal gelezen uit de poorten. Als de knop wordt ingedrukt, wordt deze aangegeven met het cijfer 1, en zo niet - 2. Vervolgens een analyse van alle waarden. Er was bijvoorbeeld zo'n combinatie als 0,1,1. Dit betekent dat de eerste toets wordt ingedrukt en de andere twee niet. Als alle waarden waar zijn, dan is voorwaarde 8 ook waar. Dit blijkt uit een verlichte LED op het voorpaneel. Vervolgens moet u een specifieke code invoeren die dient om de deur te openen.

De laatste code-elementen worden gebruikt om de tellerwaarden te resetten. Een dergelijke functie wordt uitgevoerd als er meer dan 10 seconden zijn verstreken sinds de laatste toetsaanslag.Zonder deze code zou je alle mogelijke opties kunnen doorlopen, hoewel er veel zijn. Nadat je dit apparaat hebt gemaakt, moet je het testen.

 

(3 stemmen)
Bezig met laden ...

Voeg een opmerking toe