Grabar contraseña en la eeprom usando un teclado

Buenas tardes a todos,

llevó intentándolo varios días y no lo puedo conseguir por mi cuenta así que recurro al foro a ver si me pueden echar una mano con el programa que esto realizando.

Es para un sistema de seguridad, el cual funciona de la siguiente manera:

Tiene una contraseña de administrador de 4 dígitos “1111” creada desde el programa y modificable desde el mismo , tiene la opción de tres intentos cada vez que se introduce de forma incorrecta obtenemos un mensaje “error, try again” y después del tercer intento se bloquea durante 5 segundos y si es correcta se abre “open” durante 3 segundos. esta parte del programa funciona correctamente.

Lo que no se como enfocarlo es que si presiono la tecla * o # me permita entrar en la eeprom y teclear una contraseña de usuario de 4 digitos para luego guardarlo en la eeprom, estoy atascado aquí y no se como avanzar agradezco cualquier ayuda.

  • este programa lo hice para que se visualizara en el monitor serie de arduino pero utilizare un lcd
/* sistema de seguridad*/

#include <Keypad.h>           

const byte rows = 4;          
const byte cols = 3;          

char keys[rows][cols] = {     
{'7','8','9'},
{'4','5','6'},
{'1','2','3'},
{'*','0','#'}
};
byte rowPins[rows] = {9, 8, 7, 6};  
byte colPins[cols] = {10, 11, 12};     
                
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, rows, cols );  

int  count=0;           //  variable entera para el contador de errores  
int i=0, r=0;        // i contador de teclas, r las teclas que se presionaron 


void setup() {              
Serial.begin (9600);
}

void loop() 
{               
  char key;                  //   key o tecla
  key = keypad.getKey();     // 
  if (key == '*')
    Serial.println ("Grabar en la eeprom ");  //teclear la contraseña nueva y guardarla en la eeprom


    
  
    if (key != NO_KEY) {     // se evalúa si se presiona alguna tecla
      if ((key >= '0') && (key <='9')) {   // Si key es >= '0' y key <= '9'
        r = r*10 + (key-'0');
        Serial.println(r);           //  tecla PULSADA
        delay(300);             
        if(++i==4) {            // teclas pulsadas "4"
          if (r==1111) {        // password de nuestro sistema de seguridad por programa 
        
          Serial.println("Open (Time 3 sec)");  
          delay (3000);      
    
          count=0;                         // contador de errores ponemos ke 
           } else {                     

              if(count==2){                // si ke  es igual a 2 ( tiene 3 intenos para abrir, luego se bloquea)
              
                Serial.println("Blocked (Time 5 sec)"); 
                
                count=0;                   // resteamos el ke de errores
                 }
                   else{                // Si ke no es igual a 1111
                                        // aqui poner el bloqueo por 3 seg cuando ke = 3 erroes y restera los contadores
              count++;                     // incrementamos el contador de errores ke
     
          
              Serial.println("Error, try again");    
              delay(1000);               // que dure un tiempo de 
                    } 
       }
      i=r=0;                            // reseteamos las variables i y r
      delay(500);                       // un tiempo de 
       
    }
  }

}
delay(25); //ponemos un tiempo de 25 milisegundos
}

Una simple busqueda en Google de Arduino EPROM da muchos resultados como este.