Mecanismo de bloqueo Arduino: 5 pasos

Mecanismo de bloqueo Arduino: 5 pasos

Tabla de contenido:

Anonim

Este es un proyecto simple de Arduino que emula un sistema de seguridad para el hogar.

Está completamente simulado en Proteus, aunque no debe esperar mucha diferencia en un entorno real.

Usted requerirá:

  1. Proteo
  2. Estudio atmel
  3. Visual Micro para Atmel Studio
  4. Arduino IDE

Puedes usar Arduino IDE con Proteus, pero prefiero la configuración completa para aprovechar:

  1. El archivo.hex se almacena dentro de la carpeta del proyecto
  2. Atmel Studio tiene características de autocompletar convincentes

Básicamente, cuando el proyecto se carga, verá una configuración de este tipo.

Suministros:

Paso 1: Configuración, Código

#incluir

#incluir #incluir #incluir

int greenLed = 22; int redLed = 23; int servoPin = 24; // Servo int piezoPin = 25; char * ourCode = "1234"; int currentPosition = 0; Servo myservo; int pos = 0;

filas const de bytes = 4; columnas const de bytes = 3;

teclas char rows cols = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9' }, {'*', '0', '#'}}; byte rowPins filas = {13,10,9,8}; byte colPins cols = {7,6,1}; Teclado Teclado = Teclado (makeKeymap (keys), rowPins, colPins, rows, cols); LiquidCrystal Lcd (12,11,5,4,3,2);

configuración vacía () {Lcd.begin (16,2); myservo.attach (24); displayCodeEntryScreen (); pinMode (piezoPin, SALIDA); pinMode (servoPin, SALIDA); pinMode (redLed, SALIDA); pinMode (greenLed, SALIDA); digitalWrite (redLed, LOW); digitalWrite (greenLed, LOW); }

bucle de vacío () {int l; tecla clave = keypad.getKey (); Lcd.setCursor (0,0); Lcd.print ("ENTER PASSWORD"); if (int (key)! = 0) {Lcd.setCursor (4,1); para (l = 0; l <= currentPosition; ++ l) {Lcd.print ("*");} if (key == ourCode currentPosition) {++ currentPosition; if (currentPosition == 4) {unlockDoor (); currentPosition = 0; }} else {invalidCode (); currentPosition = 0; }}} void invalidCode () {digitalWrite (redLed, HIGH); digitalWrite (servoPin, LOW); digitalWrite (piezoPin, HIGH); pantalla clara(); Lcd.setCursor (0,0); Lcd.print ("ACCESS DENIED!"); Lcd.setCursor (0,1); Lcd.print ("CÓDIGO NO VÁLIDO"); retraso (5000); digitalWrite (redLed, LOW); digitalWrite (piezoPin, LOW);

displayCodeEntryScreen (); }

void turnHandle () {for (pos = 0; pos <= 180; pos + = 1) // va de 0 grados a 180 grados {// en pasos de 1 grado myservo.write (pos); // le dice al servo que vaya a la posición en la variable 'pos' retardo (15); // espera 15 ms a que el servo alcance la posición} para (pos = 180; pos> = 0; pos- = 1) // va de 180 grados a 0 grados {myservo.write (pos); // le dice al servo que vaya a la posición en la variable 'pos' retardo (15); // espera 15 ms a que el servo alcance la posición}}

void unlockDoor () {digitalWrite (greenLed, HIGH); pantalla clara(); Lcd.setCursor (0,0); Lcd.print ("ACCESO OTORGADO"); Lcd.setCursor (0,1); Lcd.print ("WELCOME !!"); digitalWrite (servoPin, HIGH); turnHandle (); retraso (500); digitalWrite (greenLed, LOW); digitalWrite (servoPin, LOW); displayCodeEntryScreen (); } void displayCodeEntryScreen () {clearScreen (); Lcd.setCursor (0,0); Lcd.print ("HOLA Y"); Lcd.setCursor (0,1); Lcd.print ("WELCOME!"); retraso (3000); pantalla clara(); } void clearScreen () {Lcd.setCursor (0,0); Lcd.print (""); Lcd.setCursor (0,1); Lcd.print (""); }

Paso 2: Pantalla de bienvenida

En una compilación exitosa, el archivo debe almacenarse en el siguiente directorio de archivos, por ejemplo: C: Users Nombre de usuario Documentos Atmel Studio 6.2 ProjectFolder ProjectName Debug

La pantalla de bienvenida es como se muestra …

Paso 3: Solicitud de contraseña

Ingresa tu contraseña

En nuestro caso 1234

Paso 4: Acceso concedido

En la entrada exitosa

Paso 5: Cierre

Después de que el motor se mueva para simular el desbloqueo de la puerta, se bloqueará de nuevo y mostrará la pantalla de inicio