codigo arduiino
//Agregamos las librerias necesarias#include <EEPROM.h>#include <SPI.h>#include <RFID.h> #include <Adafruit_Fingerprint.h>#include <SoftwareSerial.h>#include <Keypad.h>#include <Wire.h>#include <LCD.h>#include <LiquidCrystal_I2C.h>//Finger Printint getFingerprintIDez();
SoftwareSerial mySerial(10, 11); //10-11 68VERDE 69AZUL
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);// Inicializamos las variables del RFID#define SS_PIN 8// pin SDA hacia el pin 10#define RST_PIN 33// pin RST hacia el pin 9
RFID rfid(SS_PIN, RST_PIN);
LiquidCrystal_I2C lcd( 0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE );int serNum0;int serNum1;int serNum2;int serNum3;int serNum4;
String modulo = "1";
String codigo = "RB1001";///Keypad
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {54, 55, 56, 57}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {58,59,60,61}; //connect to the column pinouts of the keypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); int ledRojo = 15;int ledAzul = 16;int ledVerde = 14;/////variables para lectura serial
String Msj[4];int mensaje = 0;
boolean stringComplete = false; // whether the string is completeint lcdAction = 0;//// Variables
String FingerPrint = "OFF";int clave = 1;int Col = 8;
char password[6];
char dni[10];int pass_master, dni_user = 0;int N;
char key;
long tiempoRFID, TiempoCheck, TiempoEnvio, timeA, timeB = 0;int menuadm = 0;int menubio = 0;int menurfid = 0;int fp_detec = 0;int rfid_detec = 0;int conextion = 0;int connection = 0;
void setup() {
pinMode(ledRojo, OUTPUT);
pinMode(ledAzul, OUTPUT);
pinMode(ledVerde, OUTPUT);
digitalWrite(ledAzul, HIGH);
Serial.begin(9600); //Establecemos una velocidad de 9600 baudios
SPI.begin();
lcd.begin(20, 4);
RGB(1,0,0);// Print a message to the LCD.
rfid.init();
finger.begin(57600); if (finger.verifyPassword()) {
Serial.print("FP-ON");
FingerPrint = "ON";
} else {
Serial.print("FP-OFF");
}
delay(50);
Serial.print("CHECK-");
Serial.print(modulo);
Serial.print('-');
Serial.print(codigo);
}
////////////////////////////********************************************LOOP PRINCIPAL************************\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void loop() {
if((millis() - TiempoCheck) > 10000){
Serial.print("CHECK-");
Serial.print(modulo);
Serial.print('-');
Serial.print(codigo);
TiempoCheck = millis();
}
if((millis() - TiempoEnvio) > 15000){
lcd.clear();
TiempoEnvio = millis();
connection = 0;
RGB(1,0,0);
}
if(connection == 1){
if(lcdAction == 0 && clave == 1){
lcd.setCursor(4,0);
lcd.print("PASS-CONTROL");
lcd.setCursor(13,3);
lcd.print("MENU[D]");
}
char key = customKeypad.getKey(); if (key != NO_KEY ){
lcdAction = 1;
timeA = millis(); if((key == '0' || key == '1' || key == '2' || key == '3' || key == '4' || key == '5' || key == '6' || key == '7' || key == '8' || key == '9') && clave <= 4){
password[clave] = key;
lcd.setCursor(Col, 2);
lcd.write("*");
Col++;
clave++;if(clave > 1){
lcd.setCursor(11,3);
lcd.write("BORRAR[B]");
}
if(clave == 5){
lcd.setCursor(0,3);
lcd.write("ACEPTAR[A]");
}
}elseif(key == 'B' && clave > 1 ){
password[clave] = ' ';
Col--;
clave--;
lcd.setCursor(Col, 2);
lcd.write(" "); if(clave == 1){
lcdAction = 0;
lcd.clear();
}elseif(clave > 1 && clave < 5){
lcd.setCursor(0,3);
lcd.write(" ");
}
}elseif(key == 'A' && clave == 5){
clave = 1;
Col=8;
Serial.print("USER-");
Serial.print(password[1]);
Serial.print(password[2]);
Serial.print(password[3]);
Serial.print(password[4]);
Waiting();
}elseif(key == 'D' && clave == 1) {
pass_Master();
}
}elseif((millis() - timeA) > 10000 && clave != 1){
clave = 1;
lcdAction = 0;
Col=8;
lcd.clear();
lcd.setCursor(3,1);
lcd.write("TIEMPO SUPERADO");
delay(1200);
lcd.clear();
}
if((millis() - tiempoRFID) > 1000){
serNum0 = 0;
serNum1 = 0;
serNum2 = 0;
serNum3 = 0;
serNum4 = 0;
}
if(lcdAction == 0){
getFingerprintIDez();
delay(10);
read_RFID();
rfid.halt();
}
}else{
lcd.setCursor(4,0);
lcd.print("SIN CONEXION");
}
}
////////////////////////////********************************************FUNCIONES ************************\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void Waiting(){
for(int i=0; i<4; i++){
Msj[i] = "";
}
lcdAction = 2;
conextion = 0;
timeB = millis();
lcd.clear();
lcd.setCursor(3,1);
lcd.print("PROCESANDO...");while((millis() - timeB) < 8000 && lcdAction == 2){
if(Serial.available()) {
serialEvent();
conextion = 1;
}
}
if(conextion == 0){
lcd.clear();
lcd.setCursor(3,1);
lcd.write("TIEMPO SUPERADO");
lcd.setCursor(4,2);
lcd.write("SIN CONEXION");
delay(1200);
lcd.clear();
}
lcdAction = 0;
lcd.clear();
}
void pass_Master(){
pass_master = 1;
Col = 8;
lcd.clear();
timeA = millis();while(pass_master == 1 && (millis() - timeA) < 10000){
lcd.setCursor(1,0);
lcd.write("MENU ADMINISTRADOR");
lcd.setCursor(4,1);
lcd.write("CLAVE MAESTRA");
lcd.setCursor(0,3);
lcd.write("[A]ACEPTAR [B]BORRAR");
key = customKeypad.getKey() ; if (key != NO_KEY) {
timeA = millis(); if(key == 'B' && clave > 1 ){
password[clave] = ' ';
Col--;
clave--;
lcd.setCursor(Col, 2);
lcd.write(" ");
}elseif((key == '0' || key == '1' || key == '2' || key == '3' || key == '4' || key == '5' || key == '6' || key == '7' || key == '8' || key == '9') && clave <= 4){
password[clave] = key;
lcd.setCursor(Col, 2);
lcd.write("*");
Col++;
clave++;
}elseif(key == 'A' && clave == 5){
pass_master = 0;
clave = 1;
Col=8;
lcd.clear();
Serial.print("ADMIN-");
Serial.print(modulo);
Serial.print('-');
Serial.print(codigo);
Serial.print('-');
Serial.print(password[1]);
Serial.print(password[2]);
Serial.print(password[3]);
Serial.print(password[4]);
Waiting();
}
}
}
lcd.clear();if(pass_master == 1){
pass_master=0;
lcd.setCursor(3,1);
lcd.write("TIEMPO SUPERADO");
delay(1200);
lcd.clear();
lcdAction = 0;
}
}
void menu_Administrador(){
menuadm=1;
lcd.clear();
lcd.setCursor(1,0);
lcd.print("MENU ADMINISTRADOR");
lcd.setCursor(0,2);
lcd.print("[1]-AGREGAR USUARIO");
lcd.setCursor(0,3);
lcd.print("[2]- [0]-VOLVER");
timeA = millis();while(menuadm!=0 && (millis() - timeA) < 10000){
if(Serial.available()){
serialEvent();break;
}
key = customKeypad.getKey() ; if (key != NO_KEY) {
timeA = millis();if(key == '0'){
lcd.clear();
menuadm=0;break;
}elseif(key == '1'){
lcd.clear();
verificar_usuario();
}
}
}
lcdAction = 0;
menubio=0;
menuadm=0;
lcd.clear();
}
void verificar_usuario(){
dni_user = 1;
Col = 5;
clave = 1;
lcd.clear();
timeA = millis();while(dni_user == 1 && (millis() - timeA) < 10000){
lcd.setCursor(2,0);
lcd.write("INGRESE EL SERIAL");
lcd.setCursor(4,1);
lcd.write("DE 9 DIGITOS");
lcd.setCursor(0,3);
lcd.write("[A]ACEPTAR [B]BORRAR");
key = customKeypad.getKey() ; if (key != NO_KEY) {
timeA = millis(); if(key == 'B' && clave > 1 ){
dni[clave] = ' ';
Col--;
clave--;
lcd.setCursor(Col, 2);
lcd.write(" ");
}elseif((key == '0' || key == '1' || key == '2' || key == '3' || key == '4' || key == '5' || key == '6' || key == '7' || key == '8' || key == '9') && clave <= 9){
dni[clave] = key;
lcd.setCursor(Col, 2);
lcd.write(key);
Col++;
clave++;
}elseif(key == 'A' && clave == 10){
dni_user = 0;
clave = 1;
Col=8;
lcd.clear();
Serial.print("ADDUSER-");
Serial.print(modulo);
Serial.print("-"); for(int p=1;p<=9;p++){
Serial.print(dni[p]);
}
Waiting();
}
}
}
lcd.clear();if(dni_user == 1){
dni_user=0;
lcd.setCursor(3,1);
lcd.write("TIEMPO SUPERADO");
delay(1200);
lcd.clear();
lcdAction = 0;
}
}
// sin usosssssssssssssssssssssss
void agregar_Acceso(String bio, String rfid, String idUser){
menuadm=1;
lcd.clear();
lcd.setCursor(3,0);
lcd.print("AGREGAR ACCESO");if(bio == "0"){
lcd.setCursor(0,1);
lcd.print("[1]-BIOMETRIA");
}
if(rfid == "0"){
lcd.setCursor(0,2);
lcd.print("[2]-RFID ");
}
lcd.setCursor(0,3);
lcd.print(" [0]-VOLVER");
timeA = millis();while(menuadm!=0 && (millis() - timeA) < 10000){
if(Serial.available()){
serialEvent();break;
}
key = customKeypad.getKey() ; if (key != NO_KEY) {
timeA = millis();if(key == '0'){
lcd.clear();
menuadm=0;
menu_Administrador();
}elseif(key == '2' && rfid == "0"){
lcd.clear();
Serial.print("RFID-P-ENROLL-");
Serial.print(modulo);
Serial.print("-");
Serial.print(idUser);
Waiting();
menurfid=0;
menu_Administrador();
}elseif(key == '1' && bio == "0"){
lcd.clear();
Serial.print("FP-P-ENROLL-");
Serial.print(modulo);
Serial.print("-");
Serial.print(idUser);
Waiting();
menurfid=0;
menu_Administrador();
}
}
}
menuadm=0;
lcd.clear();
}```