Buenas tardes. En primer lugar soy nuevo en esto por lo que si cometo algún error me disculpo con antelación.
Estoy realizando un dispositivo que al detectar un umbral de sonido se activa un led, y cuando el led se activa, quiero poner un contador que me registre el número de veces que se enciende. Si el contador registra un número x de veces, dentro de un tiempo determinado, que mande un mensaje de alerta al móvil.
La cosa es que no consigo que me cuente el número de veces que enciende el led. Por favor, me podéis echar una mano, darme norte. Os lo agradecería mucho, muchísimo.
A continuación pego el código que tengo desarrollado:
P.D: No sé si será la mejor manera, pero con la poca idea que tengo es lo único que se me ocurre.
int sensorS=2;//Entrada señal de sonido
int avisoSensorS=6;//Salida. Indicador SensorS ha detectado sonido.
int estadoAvisoSensor=0;//
int estadoSensorAnt=0;
unsigned long inicioS;//Tiempo desde activación sensor.
unsigned long inicioSA;//Tiempo desde condición para activación del led AvisoSensor.
long umbralTiempo=20000; //umbral de tiempo en el que deben darse el número de repeticiones.
long tiempoledEncendido=2000;//Tiempo que el led permanece encendido.
boolean activoLedS;//variable para controlar la activación del avisoSensor.
int contadorS=0;
void setup() {
pinMode(sensorS,INPUT);
pinMode (avisoSensorS, OUTPUT);
Serial.begin(9600);
}
void alertaPorSonido()
{
while (digitalRead(sensorS)==0)
{ }
inicioS=millis();
//Serial.print(inicioS/1000);
//Serial.println();
while (inicioS<umbralTiempo)
{
if (digitalRead(sensorS)==1)
{
activoLedS=true;
inicioSA=millis();
digitalWrite(avisoSensorS, HIGH);
}
if (activoLedS)
{
if (millis()-inicioSA>tiempoledEncendido)
{
inicioSA=inicioS-millis();
activoLedS=false;
digitalWrite(avisoSensorS,LOW); // apago led1
}
}
{
contadorS=contadorS+1;
Serial.print(contadorS);
Serial.println();
}
}
}
void loop() {
alertaPorSonido();
}
Moderador: Código editado con etiquetas