Arduino combinatieslot - schema

click fraud protection

Arduino is het beste systeem voor het kopiëren van hardware. Zonder haar waren de meeste ideeën niet mogelijk geweest. Er is al lang zo'n gedachte: om een ​​speciaal cijferslot op de arduino te maken. Om het te openen, moet je een bepaalde toets ingedrukt houden. In dit geval mag het slot niet opengaan, ook niet als u de gewenste knop kent. Om het te openen, is het noodzakelijk om bepaalde intervallen aan te houden met behulp van spiergeheugen. Zo'n crimineel kan dat niet. Maar dit is allemaal slechts theorie.

Om het te verzamelen, moet je een speciaal apparaat gebruiken voor rechthoekige pulsen, evenals verschillende tellers en een hoop. Maar het voltooide apparaat zou grote afmetingen hebben en zou onhandig zijn om te gebruiken. In de regel geven dergelijke gedachten geen rust. De eerste stap om deze droom waar te maken, was het maken van een programma voor Arduino. Zij is het die als een combinatieslot zal dienen. Om het te openen, moet u niet op één toets drukken, maar op meerdere, en dit tegelijkertijd doen. Het voltooide circuit ziet er als volgt uit:

De beeldkwaliteit is niet best, maar er zijn verbindingen gemaakt met massa, D3, D5, D7, D9 en D11.

De code wordt hieronder getoond:

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; niet ondertekend lange tijd = 0; // vergeet niet alles wat millis () aanneemt op unsigned long temp = 0; // opslaan in unsigned long byte keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // codes juiste byte keyb [] = {1, 1, 1, 1, 0, 1, 0, 0}; byte-toetsc [] = {1, 0, 1, 0, 1, 1, 1, 0}; byte k = 0; void setup () {pinMode (ina, INPUT_PULLUP); // 3 ingangen aangesloten op de knoppen pinMode (inb, INPUT_PULLUP); pinMode (incl, INPUT_PULLUP); pinMode (ledPin, UITGANG); // ingebouwde LED op pin 13 pinMode (7, OUTPUT); pinMode (11, UITGANG); digitalWrite (7, LAAG); // vervang de grond digitalWrite (11, LOW); tijd = milliliter (); // nodig om de tijd te tellen} void blinktwice () {// dubbel knipperen van de LED digitalWrite (ledPin, HIGH); vertraging (100); digitalWrite (ledPin, LAAG); vertraging (100); digitalWrite (ledPin, HOOG); vertraging (100); digitalWrite (ledPin, LAAG); vertraging (200); } void loop () {if (k == 0) {blinktwice (); // prompt om code in te voeren} if (k == 8) {digitalWrite (ledPin, HIGH); vertraging (3000); k = 0; } a = digitalRead (ina); // signaalniveaus worden gelezen van knoppen - ingedrukt / niet ingedrukt b = digitalRead (inb); c = digitalRead (incl.); vertraging (100); // de volgende if - bescherming tegen valse positieven, u hoeft if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {if (a == keya [k]) {if (b == keyb [k]) {if (c = = toetsc [k]) {k ++; }}}} if (k == 1) {if (d == 0) {tijd = millis (); d++; }} temp = millis (); temp = temp - tijd; als (temp> 10000) {k = 0; d = 0; tijd = milliliter (); } } 


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

Na het toewijzen van de functies wordt het signaal uit de poorten gelezen. Als de knop wordt ingedrukt, wordt dit aangegeven met het cijfer 1, en zo niet - 2. Verder worden alle waarden geanalyseerd. Zo verscheen er een combinatie zoals 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 de verlichte LED op het frontpaneel. Vervolgens moet u een specifieke code invoeren die dient om de deur te openen.

De laatste elementen van de code worden gebruikt om de tellerwaarden te resetten. Deze functie wordt uitgevoerd als er meer dan 10 seconden zijn verstreken sinds de laatste toetsdruk. Zonder deze code was het mogelijk om alle mogelijke opties op te sommen, hoewel er nogal wat zijn. Nadat u dit apparaat hebt gemaakt, moet u het testen. Nog Arduino-projecten.

Leuk vinden(0)ik hou niet van(0)

instagram viewer