# Pulse In Returns the duration of a pulse (high or low) from a [pin](/device/pins) on the @boardname@ board in microseconds. ```sig pins.pulseIn(DigitalPin.P0, PulseValue.High) ``` ### ~avatar Some pins are also used by the [LED screen](/device/screen). Please read the [page about pins](/device/pins) carefully. ### ~ ### Parameters * ``name`` is a [string](/reference/types/string) that stores the name of the pin (``P0``, ``P1``, or ``P2``, up through ``P20``) * ``value`` is the value of the pulse, ``high`` or ``low`` * ``maxDuration``, maximum duration in micro-seconds. If no pulse is received ### Returns * a [number](/reference/types/number) that represents the pulse duration in micro-seconds ### Example: Measuring distance with a sonar The following script sends a pulse on ``P0`` and reads the pulse returned by a HC-SR04 sonar to determine the distance of the object in front of the sensor. ```blocks basic.forever(() => { // send pulse pins.digitalWritePin(DigitalPin.P0, 0) control.waitMicros(2) pins.digitalWritePin(DigitalPin.P0, 1) control.waitMicros(10) pins.digitalWritePin(DigitalPin.P0, 0) // read pulse led.plotBarGraph(pins.pulseIn(DigitalPin.P1, PulseValue.High) / 58, 0) basic.pause(100) }) ``` #### ~hint This function is not supported in the simulator. #### ~ ### See also [digital write pin](/reference/pins/digital-write-pin),