Hola he implementado el codigo pero quiero saber como hago para que me imprima una sola ve el estado de alarma ACTIVADO o DESACTIVADO, porque me sigue imprimiendo una y otra ves, por el loop
he logrado hacer que se active o desactive al presionar un 3º boton
// Programa
void loop()
{
PulsadorArmadoEstadoActual = digitalRead(BOTON_ACT);
//AVCTIVA DESACTIVA ALARMA
if (PulsadorArmadoEstadoActual == 0 && PulsadorArmadoEstadoAnterior == 1) ARMADO = !ARMADO;
//PulsadorArmadoEstadoActual = PulsadorArmadoEstadoAnterior;
switch (ARMADO)
{
case 1:
Serial.println("ALARMA 1 ACTIVADA");
Serial.println(ARMADO);
if(digitalRead(pirPin) == HIGH)
{
digitalWrite(ledPin, HIGH); //LED visualiza el estado de la salida del sensor
if(lockLow){
//Se asegura de que esperar a que la transición a la baja antes de cualquier salida se hace otra:
lockLow = false;
Serial.println("---");
Serial.print("movimiento encontrado a los ");
Serial.print(millis()/1000);
Serial.println(" segundos ");
delay(50);
for (countleds=0;countleds<6;countleds++)// movimento detectado se encende la luz
{
delay(500);
Serial.println(countleds);
switch (countleds)
{
case 0:
digitalWrite (pinLeds[0,1,2],LOW);
//digitalWrite (pinLeds[1],LOW);
//digitalWrite (pinLeds[2],LOW);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 1:
digitalWrite (pinLeds[0,1],LOW);
//digitalWrite (pinLeds[1],LOW);
digitalWrite (pinLeds[2],HIGH);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 2:
digitalWrite (pinLeds[0,2],LOW);
digitalWrite (pinLeds[1],HIGH);
//digitalWrite (pinLeds[2],LOW);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 3:
digitalWrite (pinLeds[0],LOW);
digitalWrite (pinLeds[1,2],HIGH);
// digitalWrite (pinLeds[2],HIGH);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 4:
digitalWrite (pinLeds[0],HIGH);
digitalWrite (pinLeds[1,2],LOW);
// digitalWrite (pinLeds[2],LOW);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 5:
digitalWrite (pinLeds[0,2],HIGH);
digitalWrite (pinLeds[1],LOW);
// digitalWrite (pinLeds[2],HIGH);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
}
}
}
takeLowTime = true;
}
if(digitalRead(pirPin) == LOW){
digitalWrite(ledPin, LOW); //LED visualiza el estado de la salida del sensor
if(takeLowTime){
lowIn = millis(); // guardar el momento de la transición de alta a baja
takeLowTime = false; // asegurarse de que esto sólo se hace al comienzo de una fase de baja
}
//Si el sensor es baja para más de la pausa dada,
//Asumimos que el movimiento no más que va a pasar
if(!lockLow && millis() - lowIn > pause){
//Se asegura de este bloque de código sólo se ejecuta de nuevo después de
//Una secuencia de movimiento se ha detectado nuevo
lockLow = true;
Serial.print("movimiento detenido a los ");
Serial.print((millis() - pause)/1000);
Serial.println(" segundos ");
delay(50);
for (countleds;countleds>0;countleds--)// movimento parado se apaga la luz
{
delay(300);
Serial.println(countleds);
switch (countleds)
{
case 0:
digitalWrite (pinLeds[0],LOW);
digitalWrite (pinLeds[1],LOW);
digitalWrite (pinLeds[2],LOW);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 1:
digitalWrite (pinLeds[0],LOW);
digitalWrite (pinLeds[1],LOW);
digitalWrite (pinLeds[2],HIGH);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 2:
digitalWrite (pinLeds[0],LOW);
digitalWrite (pinLeds[1],HIGH);
digitalWrite (pinLeds[2],LOW);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 3:
digitalWrite (pinLeds[0],LOW);
digitalWrite (pinLeds[1],HIGH);
digitalWrite (pinLeds[2],HIGH);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 4:
digitalWrite (pinLeds[0],HIGH);
digitalWrite (pinLeds[1],LOW);
digitalWrite (pinLeds[2],LOW);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 5:
digitalWrite (pinLeds[0],HIGH);
digitalWrite (pinLeds[1],LOW);
digitalWrite (pinLeds[2],HIGH);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
}
}
}
}
//if (ARMADO==0)
case 0:
PulsadorUpEstadoActual = digitalRead(PORTA_U);
PulsadorDownEstadoActual = digitalRead(PORTA_D);
if (PulsadorUpEstadoActual == 0 && PulsadorUpEstadoAnterior == 1) countleds = countleds++;
if (PulsadorDownEstadoActual == 0 && PulsadorDownEstadoAnterior == 1) countleds = countleds--;
countleds = constrain(countleds, 0, 7);
PulsadorUpEstadoAnterior = PulsadorUpEstadoActual;
PulsadorDownEstadoAnterior = PulsadorDownEstadoActual;
switch (countleds)
{
case 0:
digitalWrite (pinLeds[0,1,2],LOW);
//digitalWrite (pinLeds[1],LOW);
//digitalWrite (pinLeds[2],LOW);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 1:
digitalWrite (pinLeds[0,1],LOW);
//digitalWrite (pinLeds[1],LOW);
digitalWrite (pinLeds[2],HIGH);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 2:
digitalWrite (pinLeds[0,2],LOW);
digitalWrite (pinLeds[1],HIGH);
//digitalWrite (pinLeds[2],LOW);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 3:
digitalWrite (pinLeds[0],LOW);
digitalWrite (pinLeds[1,2],HIGH);
// digitalWrite (pinLeds[2],HIGH);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 4:
digitalWrite (pinLeds[0],HIGH);
digitalWrite (pinLeds[1,2],LOW);
// digitalWrite (pinLeds[2],LOW);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 5:
digitalWrite (pinLeds[0,2],HIGH);
digitalWrite (pinLeds[1],LOW);
// digitalWrite (pinLeds[2],HIGH);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 6:
digitalWrite (pinLeds[0,1],HIGH);
// digitalWrite (pinLeds[1],HIGH);
digitalWrite (pinLeds[2],LOW);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
case 7:
digitalWrite (pinLeds[0,1,2],HIGH);
//digitalWrite (pinLeds[1],HIGH);
// digitalWrite (pinLeds[2],HIGH);
Serial.println(pinLeds[0,1,2]);
Serial.println(countleds);
break;
}
}
delay(1000);