Lucchetto a combinazione insolito su Arduino

Arduino è il miglior sistema per copiare qualsiasi apparecchiatura. La maggior parte delle idee non sarebbe stata possibile senza di lei. Per molto tempo c'è stata una simile idea: creare un blocco combinazione speciale per Arduino. Per aprirlo, è necessario tenere premuto un determinato tasto. In questo caso, il lucchetto non dovrebbe aprirsi, anche se si conosce il pulsante destro. Per aprirlo, è necessario resistere a determinati intervalli usando la memoria muscolare. Tale criminale non sarà in grado di impegnarsi. Ma questa è solo una teoria.

Per assemblarlo è necessario utilizzare un dispositivo speciale di impulsi rettangolari, nonché diversi contatori e un heap. Ma il dispositivo finito avrebbe grandi dimensioni complessive e sarebbe scomodo da usare. Di norma, tali pensieri perseguitano. Il primo passo nella realizzazione di un sogno è stata la creazione di un programma per Arduino. Funzionerà come un lucchetto a combinazione. Per aprirlo, dovrai premere non un tasto, ma diversi, e farlo contemporaneamente. Lo schema finito è simile al seguente:

Lucchetto a combinazione

La qualità dell'immagine non è la migliore, ma la connessione viene effettuata a terra, D3, D5, D7, D9 e D11.

Il codice è presentato di seguito:

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;

lungo tempo non firmato = 0; // non dimenticare tutto ciò che richiede un valore in millis ()

temp lungo senza segno = 0; // memorizza in unsigned long

byte keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // codici effettivamente

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

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

byte k = 0;

 

void setup () {

pinMode (ina, INPUT_PULLUP); // 3 ingressi collegati ai pulsanti

pinMode (inb, INPUT_PULLUP);

pinMode (inc, INPUT_PULLUP);

pinMode (ledPin, OUTPUT); // LED incorporato sul 13 ° pin

pinMode (7, OUTPUT);

pinMode (11, OUTPUT);

digitalWrite (7, LOW); // sostituisce la terra

digitalWrite (11, LOW);

time = millis (); // doveva contare il tempo

}

 

void blinktwice () {// doppio LED lampeggiante

digitalWrite (ledPin, HIGH);

ritardo (100);

digitalWrite (ledPin, LOW);

ritardo (100);

digitalWrite (ledPin, HIGH);

ritardo (100);

digitalWrite (ledPin, LOW);

ritardo (200);

}

 

void loop () {

if (k == 0) {

blinktwice (); // richiede il codice

}

if (k == 8) {

digitalWrite (ledPin, HIGH);

ritardo (3000);

k è 0;

}

a = digitalRead (ina); // legge i livelli del segnale dai pulsanti - premuto / non premuto

b = digitalRead (inb);

c = digitalRead (inc);

ritardo (100); // avanti se - protezione da falsi positivi, non è possibile utilizzare

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

time = millis ();

d ++;

}

}

temp = millis ();

temp = temp - time;

if (temp> 10000) {

k è 0;

d è 0;

time = millis ();

}

}


Per evitare domande inutili sul codice, è necessario chiarire alcuni punti. La funzione di configurazione viene utilizzata per assegnare le porte. La funzione successiva è Input_Pullup, che è necessario per aumentare la tensione del pin di 5 V. Questo viene fatto usando un resistore. Per questo motivo, non si verificano vari cortocircuiti. Per comodità, si consiglia di utilizzare la funzione blinktwice. In generale, quando si creano vari programmi, è necessario provare altre funzioni.

Dopo l'assegnazione delle funzioni, il segnale viene letto dalle porte. Se si preme il pulsante, verrà indicato dal numero 1, e in caso contrario - 2. Successivamente, un'analisi di tutti i valori. Ad esempio, c'era una combinazione come 0,1,1. Ciò significa che viene premuto il primo tasto e gli altri due no. Se tutti i valori sono veri, anche la condizione 8 è vera. Ciò è evidenziato da un LED acceso sul pannello frontale. Successivamente, è necessario inserire un codice specifico che servirà per aprire la porta.

Gli ultimi elementi del codice vengono utilizzati per ripristinare i valori del contatore. Tale funzione viene eseguita se sono trascorsi più di 10 secondi dall'ultima pressione del tasto.Senza questo codice, potresti passare attraverso tutte le opzioni possibili, anche se ce ne sono molte. Dopo aver creato questo dispositivo, è necessario testarlo.

 

(3 voti)
Caricamento in corso ...

Aggiungi un commento