diff --git a/samples/sensor/vl53l0x/README.rst b/samples/sensor/vl53l0x/README.rst index 53f4bc9e1f91..4d7fbc6f0205 100644 --- a/samples/sensor/vl53l0x/README.rst +++ b/samples/sensor/vl53l0x/README.rst @@ -9,7 +9,7 @@ Overview This sample periodically measures distance between vl53l0x sensor and target. The result is displayed on the console. -It also shows how we can use the vl53l0x as a proximity sensor. +It shows the usage of all available channels including private ones. Requirements ************ @@ -24,24 +24,33 @@ References Building and Running ******************** - This project outputs sensor data to the console. It requires a VL53L0X - sensor, which is present on the disco_l475_iot1 board. +This project outputs sensor data to the console. It requires a VL53L0X +sensor, which is present on the disco_l475_iot1 board. - .. zephyr-app-commands:: - :zephyr-app: samples/sensor/vl53l0x/ - :goals: build flash +.. zephyr-app-commands:: + :zephyr-app: samples/sensor/vl53l0x/ + :goals: build flash Sample Output ============= - .. code-block:: console - - prox is 0 - distance is 1938 - prox is 1 - distance is 70 - prox is 0 - distance is 1995 - - +.. code-block:: console + + prox is 0 + distance is 1874 mm + Max distance is 000 mm + Signal rate is 33435 Cps + Ambient rate is 17365 Cps + SPADs used: 195 + Status: OK + + prox is 0 + distance is 1888 mm + Max distance is 000 mm + Signal rate is 20846 Cps + Ambient rate is 25178 Cps + SPADs used: 195 + Status: OK + + diff --git a/samples/sensor/vl53l0x/src/main.c b/samples/sensor/vl53l0x/src/main.c index cfed1adaa623..e9b76d410e77 100644 --- a/samples/sensor/vl53l0x/src/main.c +++ b/samples/sensor/vl53l0x/src/main.c @@ -7,8 +7,8 @@ #include #include #include -#include #include +#include int main(void) { @@ -31,12 +31,30 @@ int main(void) ret = sensor_channel_get(dev, SENSOR_CHAN_PROX, &value); printk("prox is %d\n", value.val1); - ret = sensor_channel_get(dev, - SENSOR_CHAN_DISTANCE, - &value); - printf("distance is %.3fm\n", sensor_value_to_double(&value)); + ret = sensor_channel_get(dev, SENSOR_CHAN_DISTANCE, &value); + printk("distance is %.3lld mm\n", sensor_value_to_milli(&value)); - k_sleep(K_MSEC(1000)); + ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_RANGE_DMAX, &value); + printk("Max distance is %.3lld mm\n", sensor_value_to_milli(&value)); + + ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_SIGNAL_RATE_RTN_CPS, &value); + printk("Signal rate is %d Cps\n", value.val1); + + ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_AMBIENT_RATE_RTN_CPS, &value); + printk("Ambient rate is %d Cps\n", value.val1); + + ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_EFFECTIVE_SPAD_RTN_COUNT, &value); + printk("SPADs used: %d\n", value.val1); + + ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_RANGE_STATUS, &value); + if (value.val1 == VL53L0X_RANGE_STATUS_RANGE_VALID) { + printk("Status: OK\n"); + } else { + printk("Status: Error code %d\n", value.val1); + } + + printk("\n"); + k_sleep(K_MSEC(5000)); } return 0; }