1 /*
2 * Copyright (c) 2017 STMicroelectronics
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7 #include <zephyr/kernel.h>
8 #include <zephyr/device.h>
9 #include <zephyr/drivers/sensor.h>
10 #include <zephyr/sys/printk.h>
11 #include <zephyr/drivers/sensor/vl53l0x.h>
12
main(void)13 int main(void)
14 {
15 const struct device *const dev = DEVICE_DT_GET_ONE(st_vl53l0x);
16 struct sensor_value value;
17 int ret;
18
19 if (!device_is_ready(dev)) {
20 printk("sensor: device not ready.\n");
21 return 0;
22 }
23
24 while (1) {
25 ret = sensor_sample_fetch(dev);
26 if (ret) {
27 printk("sensor_sample_fetch failed ret %d\n", ret);
28 return 0;
29 }
30
31 ret = sensor_channel_get(dev, SENSOR_CHAN_PROX, &value);
32 printk("prox is %d\n", value.val1);
33
34 ret = sensor_channel_get(dev, SENSOR_CHAN_DISTANCE, &value);
35 printk("distance is %.3lld mm\n", sensor_value_to_milli(&value));
36
37 ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_RANGE_DMAX, &value);
38 printk("Max distance is %.3lld mm\n", sensor_value_to_milli(&value));
39
40 ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_SIGNAL_RATE_RTN_CPS, &value);
41 printk("Signal rate is %d Cps\n", value.val1);
42
43 ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_AMBIENT_RATE_RTN_CPS, &value);
44 printk("Ambient rate is %d Cps\n", value.val1);
45
46 ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_EFFECTIVE_SPAD_RTN_COUNT, &value);
47 printk("SPADs used: %d\n", value.val1);
48
49 ret = sensor_channel_get(dev, SENSOR_CHAN_VL53L0X_RANGE_STATUS, &value);
50 if (value.val1 == VL53L0X_RANGE_STATUS_RANGE_VALID) {
51 printk("Status: OK\n");
52 } else {
53 printk("Status: Error code %d\n", value.val1);
54 }
55
56 printk("\n");
57 k_sleep(K_MSEC(5000));
58 }
59 return 0;
60 }
61