martes, 29 de abril de 2025

proyecto final arduino caja fuerte

video de donde sacamos la idea

evidencias de que lo terminamos en Tinkercad



código usado 

#include <Servo.h>

#include <Keypad.h>

#include <Password.h>


#define LED_AMARILLO 11

#define LED_VERDE 12


Servo servo;


// NUEVA contraseña: 2707

Password password = Password("2707");


byte currentPasswordLength = 0;

byte maxPasswordLength = 4;

bool puertaCerrada = false;


const byte ROWS = 4;

const byte COLS = 4;


char keys[ROWS][COLS] = {

  {'D', 'C', 'B', 'A'},

  {'#', '9', '6', '3'},

  {'0', '8', '5', '2'},

  {'*', '7', '4', '1'}

};


byte rowPins[ROWS] = {2, 3, 4, 5};

byte colPins[COLS] = {6, 7, 8, 9};


Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);


void setup() {

  Serial.begin(9600);


  pinMode(LED_AMARILLO, OUTPUT);

  pinMode(LED_VERDE, OUTPUT);


  servo.attach(10);

  servo.write(50); // Puerta abierta


  digitalWrite(LED_VERDE, HIGH);

  digitalWrite(LED_AMARILLO, LOW);

}


void loop() {

  char key = keypad.getKey();

  if (key != NO_KEY) {

    delay(60);

    if (key == 'C') {

      resetPassword();

    } else if (isDigit(key)) {

      processNumberKey(key);

    } else if (key == '*') {

      verificarPassword();

    }

  }

}


void processNumberKey(char key) {

  if (currentPasswordLength < maxPasswordLength) {

    password.append(key);

    currentPasswordLength++;

  }

}


void verificarPassword() {

  if (currentPasswordLength == maxPasswordLength) {

    if (password.evaluate()) {

      if (!puertaCerrada) {

        cerrarPuerta();

      } else {

        abrirPuerta();

      }

    } else {

      parpadearLedError();

    }

  } else {

    // Indica error si se presiona * antes de escribir 4 dígitos

    parpadearLedError();

  }

  resetPassword();

}


void cerrarPuerta() {

  servo.write(110);

  digitalWrite(LED_AMARILLO, HIGH);

  digitalWrite(LED_VERDE, LOW);

  puertaCerrada = true;

  delay(1000);

}


void abrirPuerta() {

  servo.write(50);

  digitalWrite(LED_AMARILLO, LOW);

  digitalWrite(LED_VERDE, HIGH);

  puertaCerrada = false;

  delay(1000);

}


void parpadearLedError() {

  for (int i = 0; i < 3; i++) {

    digitalWrite(LED_AMARILLO, LOW);

    digitalWrite(LED_VERDE, LOW);

    delay(200);

    digitalWrite(LED_AMARILLO, HIGH);

    digitalWrite(LED_VERDE, HIGH);

    delay(200);

  }

  digitalWrite(LED_AMARILLO, puertaCerrada);

  digitalWrite(LED_VERDE, !puertaCerrada);

}


void resetPassword() {

  password.reset();

  currentPasswordLength = 0;

}



código original

#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <Teclado.h>
#include <Contraseña.h>

#define el timbre 11

Servo servo;
Cristal líquido_I2C lcd(0x27, 16, 2);

String newPasswordString; //contiene la nueva contraseña
char newPassword[6]; //cadena de caracteres de newPasswordString
byte a = 5;
valor bool = verdadero;

Contraseña contraseña = Contraseña("0123"); //Ingrese su contraseña

byte longitud máxima de contraseña = 6;
byte longitudDeContraseñaActual = 0;
const byte ROWS = 4; // Cuatro filas
const byte COLS = 4; // Cuatro columnas

claves de caracteres[FILAS][COlumnas] = {
  {'D', 'C', 'B', 'A'},
  {'#', '9', '6', '3'},
  {'0', '8', '5', '2'},
  {'*', '7', '4', '1'},
};

byte rowPins[FILAS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8, 9};

Teclado teclado = Teclado( makeKeymap(teclas), rowPins, colPins, FILAS, COLS );

configuración vacía() {
  Serial.begin(9600);
  pinMode(zumbador, SALIDA);
  servo.attach(10);
  servo.write(50);
  lcd.init();
  lcd.retroiluminación();
  lcd.setCursor(3, 0);
  lcd.print("BIENVENIDO A");
  lcd.setCursor(0, 1);
  lcd.print("SISTEMA DE BLOQUEO DE PUERTA");
  retraso(3000);
  lcd.clear();
}

bucle vacío() {
  lcd.setCursor(1, 0);
  lcd.print("INGRESE LA CONTRASEÑA");

  char clave = teclado.getKey();
  si (clave != NO_KEY) {
    retraso(60);
    si (tecla == 'C') {
      restablecerContraseña();
    } de lo contrario si (clave == 'D') {
      si (valor == verdadero) {
        puerta cerrada();
        valor = falso;
      } de lo contrario si (valor == falso) {
        puerta abierta();
        valor = verdadero;
      }
    } demás {
      processNumberKey(clave);
    }
  }
}

void processNumberKey(char clave) {
  lcd.setCursor(a, 1);
  lcd.print("*");
  a++;
  si (a == 11) {
    a = 5;
  }
  longitudDeContraseñaActual++;
  contraseña.append(clave);

  si (longitudContraseñaActual ==longitudContraseñaMáxima) {
    puerta cerrada();
    puerta abierta();
  }
}

void puerta abierta() {
  si (contraseña.evaluar()) {
    digitalWrite(zumbador, ALTO);
    retraso(300);
    digitalWrite(zumbador, BAJO);
    servo.write(50);
    retraso(100);
    lcd.setCursor(0, 0);
    lcd.print("CONTRASEÑA CORRECTA");
    lcd.setCursor(0, 1);
    lcd.print("PUERTA ABIERTA");
    retraso(2000);
    lcd.clear();
    a = 5;
  } demás {
    digitalWrite(zumbador, ALTO);
    retraso(200);
    digitalWrite(zumbador, BAJO);
    retraso(200);
    digitalWrite(zumbador, ALTO);
    retraso(200);
    digitalWrite(zumbador, BAJO);
    retraso(200);
    digitalWrite(zumbador, ALTO);
    retraso(200);
    digitalWrite(zumbador, BAJO);
    retraso(200);
    lcd.setCursor(0, 0);
    lcd.print("¡CONTRASEÑA INCORRECTA!");
    lcd.setCursor(0, 1);
    lcd.print("POR FAVOR, INTÉNTALO DE NUEVO");
    retraso(2000);
    lcd.clear();
    a = 5;
  }
  restablecerContraseña();
}

void restablecerContraseña() {
  contraseña.reset();
  longitudDeContraseñaActual = 0;
  lcd.clear();
  a = 5;
}

void puerta cerrada() {
  si (contraseña.evaluar()) {
    digitalWrite(zumbador, ALTO);
    retraso(300);
    digitalWrite(zumbador, BAJO);
    servo.write(110);
    retraso(100);
    lcd.setCursor(0, 0);
    lcd.print("CONTRASEÑA CORRECTA");
    lcd.setCursor(2, 1);
    lcd.print("PUERTA CERRADA");
    retraso(2000);
    lcd.clear();
    a = 5;
  } demás {
    digitalWrite(zumbador, ALTO);
    retraso(200);
    digitalWrite(zumbador, BAJO);
    retraso(200);
    digitalWrite(zumbador, ALTO);
    retraso(200);
    digitalWrite(zumbador, BAJO);
    retraso(200);
    digitalWrite(zumbador, ALTO);
    retraso(200);
    digitalWrite(zumbador, BAJO);
    retraso(200);
    lcd.setCursor(0, 0);
    lcd.print("¡CONTRASEÑA INCORRECTA!");
    lcd.setCursor(0, 1);
    lcd.print("POR FAVOR, INTÉNTALO DE NUEVO");
    retraso(2000);
    lcd.clear();
    a = 5;
  }
  restablecerContraseña();
}

materiales a utilizar
-cartón
  • -Arduino UNO 
  • -Cables m-h,m-m
  • -Pantalla LCD con módulo I2C 
  • -Servomotor 
  • -Zumbador de 5 V 
  • -Teclado 4x4

  • diseño de la caja fuerte

  • PSINT


  • materiales utilizados
  • 1.arduino uno
  • 2.buzzer
  • 3.srevomotor
  • 4.cables m-h m-m
  • 5.tablero 4x4
  • 6.pantalla led lcd pequeña
  • 7.alambre
  • 8.carton
  • 9.pasador
  • formato planteamiento

  • logo del proyecto
  • realizado por: dyland narvaez

  • pendon o presentacion del proyecto
  • realizado por: dyland narvaez


    pendon fisico

  • cronograma 


No hay comentarios:

Publicar un comentario

presentacion

  🎤 PROYECTO: SAFETY BOX – Caja fuerte electrónica con Arduino 👥 Presentación del equipo Buenos días, somos el grupo Phantom T...