pulse In

Wait for a pulse to happen on a digital pin and say how long the pulse lasted.

pins.A0.pulseIn(PulseValue.High)

A pulse is a change of voltage at the input of a digital pin. This might happen if a switch connected to the pin is pressed or a sensor attached to the pin wants to give a signal. A pulse is an action of changing voltage from high to low, or from low to high. The input to a pin is normally made to stay at either a high or low voltage when it isn’t pulsed (its unsignalled state). You can decide what input value to keep the pin at is when it’s not pulsed. You do this by giving it a pull direction with ||pins:set pull||.

You wait for a pulse on a pin, going from either high to low, or low to high. A pulse value of high is used when you are waiting for an input change from low to high. A pulse value of low is used to wait for a change of input going from high to low.

When it notices a pulse in the direction it’s waiting for, ||pins:pulse in|| stops waiting and tells you how long the pulse lasted. It won’t wait forever though. There is a time limit of 2 seconds to wait for the pulse to happen and 2 seconds for the pulse to finish. If the pulse takes too long to happen or lasts for too long, ||pins:pulse in|| will just say the pulse lasted for no time, 0 microseconds. If you don’t want to wait for 2 seconds, you can use a smaller amount of time in maxDuration. The amount of time is in microseconds (1 second = 1000000 microseconds).

Parameters

  • value: a the pulse value to wait for, either high or low.
  • maxDuration: the longest amount of time to wait for the pulse to happen, in microseconds, like: 50000.

Returns

  • a number that is how long the pulse happened. The pulse time is a number of microseconds.

Example

Check for a low pulse on pin D5 every one-half of a second. Write to the console if there was a pulse.

let pulseTime = 0;
pins.D5.setPull(PinPullMode.PullUp)

forever(function() {
    pulseTime = pins.D5.pulseIn(PulseValue.Low)
    if (pulseTime > 0) {
        console.logValue("pulse-time", pulseTime)
    }
    pause(500)
})

See also

digital read, set pull, on pulsed