pulseInLong()

Descrição

pulseInLong() é uma alternativa à função pulseIn(), sendo melhor para lidar com pulsos longos e situações afetadas por interrupções.

Reads a pulse (either HIGH or LOW) on a pin. For example, if value is HIGH, pulseInLong() waits for the pin to go HIGH, starts timing, then waits for the pin to go LOW and stops timing. Returns the length of the pulse in microseconds or 0 if no complete pulse was received within the timeout.

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)
  • valor: tipo de pulso a ser lido: pode ser HIGH ou LOW. (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).

Código de Exemplo

O exemplo abaixo imprime na porta serial a duração de um pulso no pino 7.

int pino = 7; // pino para a entrada do pulso unsigned long duracao; // variável para guardar a duração do pulso void setup() { Serial.begin(9600); pinMode(pino, INPUT); } void loop() { duracao = pulseInLong(pino, HIGH); Serial.println(duracao); }

※ Notas e Advertências:

Essa função depende da função micros(), então não pode ser usada quando interrupções estiverem desativadas com noInterrupts().

Ver Também

Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.