pulseIn()

Descripción

Lee un pulso (HIGHo LOW) en un pin. Por ejemplo, si el valor es alto, pulseIn() espera a que el pin pase a nivel HIGH, se inicia el tiempo, espera a que el pin pase a nivel LOW y para el cronómetro. Devuelve la longitud del impulso en microsegundos o 0 si no se recibe un pulso completo dentro del tiempo de espera.

La temporización de esta función se ha determinado empíricamente y probablemente mostrará errores en los pulsos más cortos. Funciona en pulsos de 10 microsegundos a 3 minutos de duración. Tenga en cuenta también que si el pin ya está a nivel HIGH cuando la función es llamada, se espera que el pin pase a nivel LOW y luego a nivel HIGH antes de que empiece a contar. Esta rutina se puede utilizar sólo si se activan las interrupciones. Por otra parte la resolución más alta se obtiene con intervalos cortos.

Sintaxis

pulseIn (pin, value)

pulseIn (pin, value, timeout)

Parámetros

  • pin: el número de pin en el que desea leer el pulso. (int)
  • value: tipo de pulso a leer: HIGH o LOW. (int)
  • timeout: (opcional) el número de microsegundos que espera a que el pulso se complete: la función devuelve 0 si el pulso completo no se recibe dentro del tiempo de espera. Por defecto es de un segundo (unsigned long). timeout, si se usa, es recomendable que sea, al menos, 1,3 veces sueperior a la duración del pulso a medir. Por ejemplo, si se mide un pulso de duración 0,01 segundo, timeout deber ser al menos 13000.

Retornos

  • La longitud del pulso (en microsegundos) o 0 si el pulso no se completa dentro del tiempo de espera (long sin signo)

Ejemplo

Este ejemplo muestra en el monitor serie la duración del impulso aplicado a la entrada 2 del Arduino. A partir de la duración del impulso se calcula la frecuencia y el número de pulsos por segundo.

El pulso puede provenir de un generador de pulsos en general o también se puede generar con otra placa Arduino mediante un sketch que simule un tren de pulsos.

float Pulso; float Tiempo = 0; float Frecuencia = 0; int NumeroPulsos = 0; void setup() { Serial.begin (9600); } void loop() { Pulso = pulseIn (2, HIGH, 15000); Tiempo = Pulso / 1000000; if (Tiempo > 0.001) { Serial.print ("Duracion del pulso: "); Serial.print (Tiempo); Serial.println (" segundos"); Serial.println (" "); } Frecuencia = 1 / Tiempo; Serial.print ("Frecuencia: "); Serial.print (Frecuencia); Serial.println (" Hz"); Serial.println (" "); NumeroPulsos = Frecuencia * 60; Serial.print ("Numero de pulsos/segundo: "); Serial.println (NumeroPulsos); Serial.println (" "); Serial.println (" "); delay (1000); }

Another example, the pulseIn() is used to capture the echo pulse from Ultrasonic Sensor. See Arduino - Ultrasonic Sensor for more detail.

ARDUINO BUY RECOMMENDATION

Arduino UNO R3
Arduino Starter Kit
Please note: These are Amazon affiliate links. If you buy the components through these links, We will get a commission at no extra cost to you. We appreciate it.

※ OUR MESSAGES