Ayuda con programación cerradura eléctrica

Hola necesito ayuda soy nuevo en Arduino y en la programación, les pongo el código del programa actual el cual pide al usuario que introduzca la clave de 6 dígitos, si es la correcta permite el acceso, y en caso de que sea incorrecta muestra en la lcd clave incorrecta.
Necesito incorporarle que si se ingresa mas de 3 claves incorrectas el sistema se bloquee por 30 segundos y si después de esperar estos 30 segundos se ingresan 2 claves incorrectas el sistema se bloquee hasta que se presione reset físicamente.
Hasta donde entiendo esto lo puedo hacer declarando nuevas variables y haciendo que se sumen, pero no tengo claro como podría hacer esto, agradezco su apoyo
Este es mi codigo:

//CERRADURA//
 
 #include <LiquidCrystal.h>
 #include <Keypad.h>
 int i=0;
 int flag=0;
 const byte ROWS = 4; //cuatro filas
 const byte COLS = 4; //cuatro columnas
 LiquidCrystal  lcd(12, 11, 5, 4, 3, 2);
 char clave[]={'1','2','3','1','2','3'};
 char ingreso[6];
 
 
 //Definiendo teclado
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {A0, A1, A2, A3}; //Conectar filas en estos pins 
byte colPins[COLS] = {A4, A5, A6, A7}; //Conectar columnas en estos pins

//Creando el keypad
Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
  lcd.begin(16, 2);
  pinMode(8, OUTPUT);
  digitalWrite(8, LOW);
}
void loop(){
  ini:
  lcd.setCursor(0, 0);
  lcd.print("Ingrese Password");
  lcd.setCursor(5, 1);
int i=0;
int flag=0;
while (i<6)
{
  char customKey = customKeypad.getKey();
  if (customKey !=NO_KEY){
    ingreso[i]=customKey;
    i++;
    lcd.print("*");
  }
}
for(int i=0;i<6;i++)
{
  if(ingreso[i]!=clave[i]) {flag=1;}
}
if(flag==1) {
  
              delay(200);
              lcd.setCursor(0, 1);
              lcd.println("clave incoerrecta");
              digitalWrite(8, LOW);
              delay(500);
              lcd.clear();
              goto ini;
}
else{
      delay(200);
      lcd.setCursor(0,1);
    lcd.println("Clave correcta");
  digitalWrite(8, HIGH);
delay(500);
digitalWrite(8,LOW);
lcd.setCursor(0, 0);
lcd.clear();
lcd.println("ingresando");
lcd.setCursor(0, 1);
lcd.println("al sistema");
}
loop1: goto loop1;
}

Cerradura_el_ctrica.ino (1.53 KB)

Y que sugieres?
Pones un contador donde esperas el fallo de la clave.
Cuando cuentas 3 arrrancas un timer con mills() mira los ejemplos en Documentación o en el IDe.
Y luego repites el proceso considerando que ya ha fallado 3 veces asi que al llelgar a 5 OUT.