Cerradura de combinación inusual en Arduino

Arduino es el mejor sistema para copiar cualquier equipo. La mayoría de las ideas no hubieran sido posibles sin ella. Durante mucho tiempo ha habido una idea: crear una cerradura de combinación especial para arduino. Para abrirlo, debe mantener presionada una tecla determinada. En este caso, el bloqueo no debe abrirse, incluso si conoce el botón correcto. Para abrirlo, es necesario soportar ciertos intervalos utilizando la memoria muscular. Tal criminal no podrá cometer. Pero esto es solo una teoría.

Para ensamblarlo, debe usar un dispositivo especial de pulsos rectangulares, así como varios contadores y un montón. Pero el dispositivo terminado tendría grandes dimensiones generales y sería incómodo de usar. Como regla, tales pensamientos persiguen. El primer paso en la realización de un sueño fue la creación de un programa para Arduino. Servirá como cerradura de combinación. Para abrirlo, deberá presionar no una tecla, sino varias, y hacerlo simultáneamente. El esquema final se ve así:

Cerradura de combinación

La calidad de imagen no es la mejor, pero la conexión se realiza en el suelo, D3, D5, D7, D9 y D11.

El código se presenta a continuación:

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;







tiempo largo sin signo = 0; // no olvides todo lo que toma un valor millis ()







temperatura larga sin signo = 0; // almacenar en tiempo sin firmar







byte keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // códigos en realidad







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







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







byte k = 0;







 







configuración nula () {







pinMode (ina, INPUT_PULLUP); // 3 entradas conectadas a botones







pinMode (inb, INPUT_PULLUP);







pinMode (inc, INPUT_PULLUP);







pinMode (ledPin, OUTPUT); // LED incorporado en el 13er pin







pinMode (7, SALIDA);







pinMode (11, SALIDA);







digitalWrite (7, BAJO); // reemplaza la tierra







digitalWrite (11, BAJO);







tiempo = millis (); // necesario para contar el tiempo







}







 







vacío blinktwice () {// LED de doble parpadeo







digitalWrite (ledPin, HIGH);







retraso (100);







digitalWrite (ledPin, LOW);







retraso (100);







digitalWrite (ledPin, HIGH);







retraso (100);







digitalWrite (ledPin, LOW);







retraso (200);







}







 







bucle vacío () {







si (k == 0) {







blinktwice (); // solicitud de código







}







si (k == 8) {







digitalWrite (ledPin, HIGH);







retraso (3000);







k es 0;







}







a = digitalRead (ina); // lee los niveles de señal de los botones - presionado / no presionado







b = digitalRead (inb);







c = digitalRead (inc);







retraso (100); // siguiente if - protección contra falsos positivos, no puedes usar







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







if (a == keya [k]) {







if (b == teclab [k]) {







if (c == keyc [k]) {







 







k ++;







}







}







}







}







si (k == 1) {







si (d == 0) {







tiempo = millis ();







d ++;







}







}







temp = millis ();







temp = temp - tiempo;







if (temp> 10000) {







k es 0;







d es 0;







tiempo = millis ();







}







}




Para evitar preguntas innecesarias sobre el código, se deben aclarar algunos puntos. La función de configuración se utiliza para asignar puertos. La siguiente función es Input_Pullup, que es necesaria para aumentar el voltaje del pin en 5 V. Esto se hace usando una resistencia. Debido a esto, no ocurrirán varios cortocircuitos. Por conveniencia, recomendamos usar la función blinktwice. En general, al crear varios programas, debe probar otras funciones.

Después de asignar las funciones, la señal se lee desde los puertos. Si se presiona el botón, se indicará con el número 1 y, si no, con 2. A continuación, se analizarán todos los valores. Por ejemplo, había una combinación como 0,1,1. Esto significa que la primera tecla está presionada y las otras dos no. Si todos los valores son verdaderos, entonces la condición 8 también es verdadera. Esto se evidencia por un LED encendido en el panel frontal. Luego, debe ingresar un código específico que sirva para abrir la puerta.

Los últimos elementos del código se utilizan para restablecer los valores del contador. Dicha función se realiza si han pasado más de 10 segundos desde la última pulsación de tecla.Sin este código, podría pasar por todas las opciones posibles, aunque hay muchas. Después de crear este dispositivo, debe probarlo.

 

(3 votos)
Cargando ...

Agrega un comentario