ALARMA: led + zumbador + sensor movimiento + pulsador

buenas a todo el mundo y gracias de antemano,
quiero hacer que un led y un zumbador emitan luz y sonido intermitentes si el sensor captan movimiento y poder apagarlo con un pulsador, os invito a que me ayudéis porque estoy hecho un lío.
Me falta meterle lo del sensor y que funcione el pulsador pues he metido un for dentro del if y no funciona hasta que acaba el for:
int a=0;
void setup() {
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(7, INPUT);
}

void loop() {

int valor_ant ;
static int valor_act = 0;
static int valor_LED = LOW;
valor_ant = valor_act ;
valor_act = digitalRead (7 ) ;
if (( valor_ant != valor_act ) && ( valor_act == LOW ) ) {
if( valor_LED == LOW ) {

for (int a = 0; a<=100; a++)
{
digitalWrite(12, HIGH);
delay(100);
digitalWrite(12, LOW);
delay(100);

tone(13,400);
delay(100);
noTone(13);
delay(100);

}

} else {
valor_LED = LOW ;
digitalWrite ( 12 , LOW ) ;
noTone(13);
}
}

}

ammm te va a regañar Surbyte por no poner el código como código. en fin creo te ayudara mas que cualquier foro utilizar el poderoso pero olvidado diagrama de flujo(las herramientas no son inventadas asi por asi). y por lo que veo tu problema se soluciona con una interrupción de hardware, deberías investigar un poco mas la respecto si cualquier cosa aqui estamos.
enserio hasta un diagrama de flujo y si ya lo tienes compartelo.
Saludos