Hola, bueno pues eso, estoy enrredando con la funcion pulseIn pero no se que pasa que funciona a medias y/o cuando quiere.
Esta es la parte del codigo que utilizo
Cuando quiere hace las parte inferior, pero la parte superior no la hace ni por asomo....
en teoría esta bien no?
Yo quiero contar el tiempo que esta entrando 5v. He visto que en algún mensaje hay gente que en el setup pone en alto o en bajo la entrada que quiere comprobar.... Si alguien me puede encarrilar....
Gracias, un saludo.
Espero alguna idea de porque no funciona bien lo de pulseIn, se que esto no es lo mas limpio y probablemente no sea lo mas adecuado, pero para poder seguir haciendo el programa de momento puedo ir tirando.
pin: the number of the pin on which you want to read the pulse. (int)
value: type of pulse to read: either HIGH or LOW. (int)
timeout (optional): the number of microseconds to wait for the pulse to start; default is one second (unsigned long)
The timing of this function has been determined empirically and will probably show errors in longer pulses. Works on pulses from 10 microseconds to 3 minutes in length.
Eso dice de PulseIn
Entonces un timeout de 5000000 useg son 5 segundos
Esto para ponernos en tema porque tu lo describes como si todos conociéramos que estas haciendo.
Supongo que tienes un sensor o pulsador con resistencia pull-up no es asi? O sea que cuando presionas leemos HIGH en la entrada pulsadorv
Chequea eso para comenzar.
Un simple millis funcionaría pero de todas formas el uso de delays hace que tu programa sea una tortura.
A ver si me comprendes con lo que quiero decir.
Tu progrma esta 5 segundos esperando a que se presione un pulsador con estado ALTO.
Si superas 1 segundos prendes un led cada 1 seg y lo apagas dos veces.
Por ahora no te resuelvo nada pero si usaras millis() pondrías contarlo usándolo pero es mas dificil.
Hola surbyte, supongo que con lo de millis seria a groso modo, si detecto la pulsación capturo los millis actuales y mientras sigue pulsado actualizar una segunda variable con los millis actuales(cuando sueltas el botón) y luego restar los millis actuales menos los capturados en la primera pulsación y según el resultado hace una cosa o otra... o eso creo que seria.
Yo entendí que el timeout era el tiempo en el que espera que se produzca la señal, o sea que es el tiempo que espera antes de empezar a mirar el puerto?
Supongo que tienes un sensor o pulsador con resistencia pull-up no es asi? O sea que cuando presionas leemos HIGH en la entrada pulsadorv
esto seria lo contrario no? con resistencia pull-down para que en estado normal tengas LOW .
Yo entendí que el timeout era el tiempo en el que espera que se produzca la señal, o sea que es el tiempo que espera antes de empezar a mirar el puerto?
correcto ,se ejecuta el pulsein y se espera el tiempo especificado (o un segundo si no se especifica nada) si no se ha recibido nada en ese tiempo ,sigue la ejecucion.supongo que lo que quiere decir surbyte es que tienes el programa parado 5s cada vez que se ejecuta el loop a la espera de la lectura de pulso.puedes comprobar si lee pulso o no con un if ,si la funcion devuelve 0 ,es que no ha detectado pulso durante la duracion del timeout.
flatron:
Hola surbyte, supongo que con lo de millis seria a groso modo, si detecto la pulsación capturo los millis actuales y mientras sigue pulsado actualizar una segunda variable con los millis actuales(cuando sueltas el botón) y luego restar los millis actuales menos los capturados en la primera pulsación y según el resultado hace una cosa o otra... o eso creo que seria.
Yo entendí que el timeout era el tiempo en el que espera que se produzca la señal, o sea que es el tiempo que espera antes de empezar a mirar el puerto?
Un saludo.
Si pero con la ventaja que no detienes todo el proceso de ejecución del programa