Duda sobre como leer el estado de algo

Hola buenos dias, antes que nada agradeceros a los que me ayudaron con mi anterior pregunta sobre millis() ya que con el tutorial de uno de aqui llege a entender para despues modificar mi programa.

El caso de ahora es que: estoy haciendo una alarma, y quiero leer cuantas veces se enciende un led (daigual el motivo, no voy a contarlo porque no es subjetivo). Lo que no se es como hacer el contador, ya que cuando hago el digitalread, como el led se mantiene encendido durante 2seg y luego se apaga, el contador me suma todo el rato durante esos 2 segundos y yo solo quiero que sume una vez.

He estado mirando videos, y me ha salido un codigo en youtube pero tiene un while y dentro de ese while no hay nada, por lo tanto me para todo el programa exterior. Teneis alguna idea o me podeis orientar de algun modo? Gracias

Crea una variable contador, sin duda en tu alarma tienes la orden de encender el led , inmediatamente después de ella

contador ++;

Contendrá las veces que se ha encendido el led, mira lo que contiene, opera con ella o ponla a cero cuando te interese.
Saludos.

Pero el problema esta que cuando doy la orden de contador++ coomo el led queda encendido durante 2 segundos y se apaga, el contador en vez de sumarme +1, me suma muchisimos numeros (lo que le da tiempo en esos 2 seg)

Pon el trozo de codigo porque me temo que aunque el led este encendido lo vuelves a encerder multiples veces, Sin ver como lo haces es dificil responder.

@iker1234837 lo que te ha dicho @gonpezzi que hagas es lo más lógico del planeta, veamos.

Según entiendo tu tienes la idea de chequer cada tanto el estado del pin que maneja el LED para ver si está encendido he incrementar un contador.

Ahora, si ese LED está encendido (da igual el motivo) es porque en alguna parte del código hay un digitalWrite() que enciende el LED.
¿De acuerdo?
Entonces, ahí, luego de ese digitalWrite() que enciende el LED (valga la redundancia), incrementas el contador.

Y si no te gusta esa solución y avanzas en la dirección que vas, usa una variable, por ej. yaContado, que cuando encuentras el LED encendido, luego de hacer el incremento, la pones en true y cuando el LED está apagado la pones en false
Luego SI el LED está encendido Y yaContado es false haces el incremento, sino pasas de largo.
Algo así

Si LED encendido
    Si yaContado es false
        contador++
        yaContado = true
  
Sino  // el LED está apagado
    yaContado = false
  

Saludos

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.