Descrição
pulseInLong()
é uma alternativa à função pulseIn(), sendo melhor para lidar com pulsos longos e situações afetadas por interrupções.
Lê um pulso (HIGH ou LOW) em um pino. Por exemplo, se o valor for HIGH, pulseInLong()
espera que o pino vá HIGH
, começa a cronometrar e, em seguida, espera que o pino vá LOW
e pára de cronometrar. Retorna a duração do pulso em microssegundos ou 0 se nenhum pulso completo foi recebido dentro do tempo limite.
A temporização dessa função foi determinada empiricamente e irá provavelmente mostrar erros em pulsos mais curtos. Funciona em pulsos de 10 microssegundos a 3 minutos de duração. Por favor note que se a função for configurada para recebr um pulso HIGH
e o pino já estiver no estado HIGH
quando a função for chamada, essa irá primeiro esperar o pino ir para estado LOW
e então HIGH
antes de começar a contar. Essa função pode ser utilizada apenas quando interrupções estiverem ativadas. Além disso, resoluções maiores são alcançadas com intervalos maiores.
Sintaxe
pulseInLong(pino, valor)
pulseInLong(pino, valor, tempo_de_espera)
Parâmetros
pino
: o número do pino do Arduino no qual se quer capturar a duração de um pulso. (int)
tempo_de_espera
(opcional): o número de microssegundos a se esperar pelo começo do pulso; o padrão é um segundo. (unsigned long)
Retorna
A duração do pulso (em microssegundos) ou 0 se nenhum pulso começar antes de se esgotar o tempo de espera (unsigned long).