Consulta sobre arduino y programacion

Hola, me gustaría hacer una alarma domiciliaria básica, la cual contaría con algún sensor y un buzzer.. esta se activaría mediante un teclado numérico.. Ahora mi duda sobre el procesador de datos de arduino es lo siguiente... Supongamos que para activar la alarma yo ingreso la clave.. ok.. se activa y "empieza a prestar atención a los sensores en input".. bueno.. si algún sensor se disparase, y configurara los tiempos que suene por 5 minutos y después se apagase la sirena... si yo quisiera desactivar la alarma mientras esta sonando... se podrá?? o tengo que esperar a que el delay del buzzer finalize su ciclo para que le de "bola" al teclado?? ya que mi duda es, funciona con multitarea?.. osea "si le presta atención a algo no le da bola a otra"? o es posible hacer que este haciendo una tarea con delays de, por ejemplo, titilando un led por x tiempo, y que tambien me preste atencion a los datos ingresados en el teclado, sin alterar el delay del led? Aclaro que soy medio nuevo en lo que es programación en general.. las pocas cosas básicas que he hecho fueron copiando fragmentos de los ejemplos que trae el programita o ejemplos de internet.. pero nunca he hecho algo de cero. Espero que se haya entendido mi planteo de la duda.. Gracias

Hola:

¿Multitarea? Si algo así. Con interrupciones (Interrupts). Por ejemplo con una interrupción se puede poner que se prenda un led al apretar un botón, aunque el bucle principal (loop) este en una larga tarea.

Por otro lado yo no creo (por si se te complica) que haga falta eso. Que se apague una alarma en 5 minutos se puede programar con delay, pero también consultando la hora (millis) hasta que haya pasado ese rato. Lo bueno de esto ultimo es que podes hacer otras cosas mientras tanto, inclusive chequear un botón y apagar la alarma.

Los interrupts son bien poderosos, pero depende que placa y como se usa puede modificar o trastocar la medición del tiempo y ni hablar de las librerías. Hay que leer la instrucciones con mucha atención.

Saludos

Para simular ese multitarea que mencionas (por que enrealidad no lo es) debes reemplazar la función delay por millis, como escribió perrociego. Luego de haber cambiado esto no es necesario utilizar un interrupt, creo que al hacer este cambio arduino funcionará como lo quieres.

fíjate en este ejemplo en donde utilizan la función millis http://arduino.cc/en/pmwiki.php?n=Tutorial/BlinkWithoutDelay