Proyecto de alarma con arduino

Buenas tardes. Estamos en un proyecto de realizacion de alarma con arduino y me saltan varios problemas o dudas que no logro solucionar.

Uno de ellos es que, si el sujeto tarda en poner la contraseña más de 5 segundos, vuelve a un estado. No se como implementar ese "si más de 5 segundos" entonces vuelve, por ejemplo, a E0 (E0=true, blabla)

La otra es borrar la contraseña caracter a caracter. Para este ultimo, he usado la funcion;

if(c=='*'){ line=""; Serial.println("");}

Lo que hace esta funcion es volver a una linea nueva tras pulsar la tecla *, "borrando" la contraseña entera, pero no caracter a caracter.

Muchas gracias por adelantado.

Un saludo.

A ver? Vamos por partes!
Antes de postear tu pregunta pudiste haber dado una vuelta por el foro, esta pregunta ha sido respondida con anterioridad.
En esa investigación te pudiste haber encontrado con:
No escribir en esta parte del foro!
Y con más razón te hubieras encontrado con:
Normas del Foro en Español
Para comenzar muevo este hilo a Software por si alguno de los amigos tiene intenciones de responderte a pesar de ser un tema muy tratado.

Esta hecho hasta el cansanació. Hay una librería que resuelve el tema del * se llama Password.h. Está en el blog de arduino.cc Lo demás, lo resuelves con millis() Desde el momento en que se inica el proceso de insertar la clave iniciar un timer usando millis() y con cada loop se irá incrementando hasta llegar a 5000 (mide en milisegundos). Entonces tomas la accíón correspondiente.

Mira el ejemplo BlinkWithoutdelay.ino del IDE que ilustra como usar millis(), tambien hay un tutorial en documentación de max_saeta y en la web infinidad, atacando todas las facetas de uso de millis(). Hay muchos ejemplos de esto que pides. Incluso varios hechos por max_saeta. Asi que busca passwerd max_saeta y verás resultados que te sirvan.