#include <EEPROM.h>

const int EEPROM_SIZE = 5; // Tamaño de la memoria EEPROM para almacenar la contraseña
char storedPassword[EEPROM_SIZE] = "1234"; // Contraseña predefinida
const int DATA_SIZE = 5;  // Tamaño de los datos que queremos almacenar en la EEPROM
char dataToWrite[DATA_SIZE] = "1234";
char newpass ;
void setup() {
  Serial.begin(115200);
  EEPROM.begin(EEPROM_SIZE); // Inicializar la EEPROM

   
  Serial.println(storedPassword);
  
  for (int i = 0; i < DATA_SIZE; ++i) {
    EEPROM.write(i, dataToWrite[i]);
  }
  EEPROM.commit(); // Guardar los datos en la EEPROM

  Serial.println("Datos escritos en la EEPROM.");
   for (int i = 0; i < EEPROM_SIZE; ++i) {
    dataToWrite[i] = EEPROM.read(i);
    Serial.print(dataToWrite[i]);
  }
}


void loop() {
  // Esperar a que se ingrese una contraseña
  Serial.println("Ingresa tu contrasena:");
  while (!Serial.available()) {
    // Esperar a que se ingrese datos por el puerto serie
  }
  
  String inputPassword = Serial.readStringUntil('\n');
  inputPassword.trim(); // Eliminar espacios en blanco al principio y al final de la contraseña ingresada

  // Verificar si la contraseña ingresada coincide con la almacenada en la EEPROM
  if (inputPassword.equals(dataToWrite)) {
    Serial.println("Contraseña correcta. Puedes modificarla.");
    Serial.println("Ingresa la nueva contraseña:");
    while (!Serial.available()) {
      // Esperar a que se ingrese datos por el puerto serie
    }
    
    String newPass = Serial.readStringUntil('\n');
    newPass.trim();

    // Verificar que la nueva contraseña no esté vacía
    if (newPass.length() > 0) {
      // Almacenar la nueva contraseña en la EEPROM
      for (int i = 0; i < EEPROM_SIZE; ++i) {
        EEPROM.write(i, newPass[i]);
      }
      EEPROM.commit();
      Serial.println("Contraseña modificada con éxito.");
      Serial.println();
    } else {
      Serial.println("La nueva contraseña no puede estar vacía.");
    }
  } else {
    Serial.println("Contraseña incorrecta. Acceso denegado.");
  }

  // Esperar un momento antes de solicitar nuevamente la contraseña
  delay(1000);
}