Tengo un problema con este programa, que pulso un pulsador para activar un led y una alarma, pero cuando termina de ejecutarse el código de el pulsado del pulsador de activar, me ejecuta el código del pulsado de desactivar, sin haberlo pulsado, y luego vuelve a ejecutar el código del activador, y así. No sé porqué sin pulsar el pulsador se ejecuta ese código. ¿Es problema del programa o puede que estén fallando los pulsadores? He probado a invertirlos y tampoco lo consigo.
#include <ABLocks_TimerFreeTone.h>
boolean b_LED_VERDE;
boolean b_ALARMA_ACTIVADA;
unsigned long task_time_ms=0;
void setup()
{
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(5, OUTPUT);
pinMode(25, INPUT);
pinMode(26, INPUT);
pinMode(14, INPUT);
Serial.begin(115200);
Serial.flush();
while(Serial.available()>0)Serial.read();
digitalWrite(12, LOW);
digitalWrite(13, LOW);
b_LED_VERDE = false;
b_ALARMA_ACTIVADA = false;
digitalWrite(5, LOW);
delay(1000);
}
void loop()
{
yield();
delay(1000);
if (digitalRead(25)) {
b_LED_VERDE = true;
b_ALARMA_ACTIVADA = true;
Serial.println(String("PULSADOR ON"));
for (int count = 0; count < 10; count++) {
TimerFreeTone(5,1000,500);
delay(1000);
}
}
if (digitalRead(26)) {
b_LED_VERDE = false;
b_ALARMA_ACTIVADA = false;
Serial.println(String("PULSADOR OFF"));
}
if ((b_LED_VERDE == true)) {
digitalWrite(12, HIGH);
}
else {
digitalWrite(12, LOW);
}
if (b_ALARMA_ACTIVADA) {
if((millis()-task_time_ms)>=5000){
task_time_ms=millis();
if (digitalRead(14)) {
digitalWrite(13, HIGH);
Serial.println(String("DETECTADO MOVIMIENTO"));
}
}
}
}