#include <EEPROM.h>

const int EEPROM_SIZE = 10; // Tamaño de la memoria EEPROM para almacenar la contraseña (incluyendo el carácter nulo al final)
char contrasena[EEPROM_SIZE] = "1234";
String datos;

void setup() {
  Serial.begin(115200);
  Serial.println("Bienvenido");

  // Inicializar EEPROM
  EEPROM.begin(EEPROM_SIZE);

  // Leer la contraseña almacenada en la EEPROM
  for (int i = 0; i < EEPROM_SIZE; ++i) {
    contrasena[i] = EEPROM.read(i);
    Serial.print(contrasena[i]);
  }
  Serial.println("  "); // Nueva línea para separar las contraseñas leídas y las nuevas entradas del usuario
}

void loop() {
  Serial.println("¿Quieres realizar una nueva contrasena? (si/no)");
  while (!Serial.available()) {
    // Esperar a que se ingrese datos por el puerto serie
  }
  
  datos = Serial.readStringUntil('\n');
  datos.trim();

  if (datos.equalsIgnoreCase("si")) {
    Serial.println("Ingresa la nueva contrasena:");
    while (!Serial.available()) {
      // Esperar a que se ingrese datos por el puerto serie
    }
    
    String nuevaContrasena = Serial.readStringUntil('\n');
    nuevaContrasena.trim();

    // Validar la longitud de la nueva contraseña
    if (nuevaContrasena.length() <= EEPROM_SIZE - 1) {
      // Escribir la nueva contraseña en la EEPROM
      for (int i = 0; i < nuevaContrasena.length(); ++i) {
        EEPROM.write(i, nuevaContrasena[i]);
        contrasena[i] = nuevaContrasena[i];
      }
      EEPROM.write(nuevaContrasena.length(), '\0'); // Escribir el carácter nulo al final de la cadena
      EEPROM.commit();
      Serial.print("Tu nueva contrasena es: ");
      Serial.println(contrasena);
      
    } else {
      Serial.println("La nueva contraseña es demasiado larga. Inténtalo de nuevo.");
    }
  }

  // Limpiar el buffer del puerto serie para evitar problemas con caracteres adicionales
   

  delay(1000);
}