read-range

wayland/vl6180x-time-of-flight/read-range

Read range (mm).
read-range
@/read-range
Read range (mm).
DEV@/vl6180x-device
A VL61080X device.
UPDpulse
Update. Trigger read.
read-range
DEV
UPD
DIST
STAT
DONE
DONEpulse
Pulse on read.
STATbyte
Status. Ranging success/error code: 00h = success; 01h = system error; 05h = system error; 06h = early convergence estimate fail; 07h = no target detected; 08h = ignore threshold check failed; 0Bh = ambient conditions too high; 0Ch = raw range algo underflow; 0Dh = raw range algo overflow; 0Eh = raw range algo underflow; 0Fh = raw range algo overflow.
DISTnumber
Distance (millimetres).
To use the node in your project you should have the wayland/vl6180x-time-of-flight library installed. Use the “File → Add Library” menu item in XOD IDE if you don’t have it yet. See Using libraries for more info.

C++ implementation

#pragma XOD evaluate_on_pin disable
#pragma XOD evaluate_on_pin enable input_UPD

node {
     void evaluate(Context ctx) {
         // The node responds only if there is an input pulse
         if (!isInputDirty<input_UPD>(ctx))
             return;
         // Get a pointer to the `VL6180X` class instance
         auto sensor = getValue<input_DEV>(ctx);
         emitValue<output_DIST>(ctx,sensor->readRange());
         emitValue<output_STAT>(ctx,sensor->readRangeStatus());
         emitValue<output_DONE>(ctx,1);
    }
}