Multiple VL53L0X time of flight sensors

Hello all,

I am trying to write some code to read the sensor values from two VL53L0X tof sensors, but I'm having some trouble.

My current code:

#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/drivers/sensor.h>
#include <zephyr/sys/printk.h>
#include <zephyr/drivers/gpio.h>

static const struct device *const leftSensor = DEVICE_DT_GET(DT_NODELABEL(right_st_vl53l0x));
static const struct device *const rightSensor = DEVICE_DT_GET(DT_NODELABEL(left_st_vl53l0x));

int main(void)
{
        struct sensor_value leftSensorValue;
        struct sensor_value rightSensorValue;
        int ret;

        k_sleep(K_MSEC(1000));

        if (!device_is_ready(leftSensor)) {
	        printk("Left Sensor: device not ready.\n");
	        return 0;
	}
        if (!device_is_ready(rightSensor)) {
	        printk("Right Sensor: device not ready.\n");
	        return 0;
	}
	while (1) {
		ret = sensor_sample_fetch(leftSensor);
		if (ret) {
			printk("sensor_sample_fetch failed ret %d\n", ret);
			return 0;
		}

		ret = sensor_channel_get(leftSensor, SENSOR_CHAN_PROX, &leftSensorValue);
		printk("prox is %d\n", leftSensorValue.val1);

		ret = sensor_channel_get(leftSensor,
					 SENSOR_CHAN_DISTANCE,
					 &leftSensorValue);
		printf("distance is %.3fm\n", sensor_value_to_double(&leftSensorValue));
                
		k_sleep(K_MSEC(1000));
	}
	return 0;
}

My devicetree:

&i2c1 {
    
    right_st_vl53l0x: right_st_vl53l0x@29{
        compatible = "st,vl53l0x";
        status = "okay";
        reg = < 0x29 >;
        xshut-gpios = < &gpio0 15 (GPIO_ACTIVE_LOW)>;
    };
    left_st_vl53l0x: left_st_vl53l0@52{
        compatible = "st,vl53l0x";
        status = "okay";
        reg = < 0x52 >;
        xshut-gpios = < &gpio0 16 (GPIO_ACTIVE_LOW)>;
    };
};
&pinctrl {
	i2c1_default: i2c1_default{
		group1 {
			psels = <NRF_PSEL(TWIM_SDA, 0, 5)>,
				<NRF_PSEL(TWIM_SCL, 0, 4)>;
		};
	};

	i2c1_sleep: i2c1_sleep{
		group1 {
			psels = <NRF_PSEL(TWIM_SDA, 0, 5)>,
				<NRF_PSEL(TWIM_SCL, 0, 4)>;
			low-power-enable;
		};
	};

};

And Kconfig:

CONFIG_STDOUT_CONSOLE=y
CONFIG_I2C=y
CONFIG_GPIO=y
CONFIG_SENSOR=y
CONFIG_VL53L0X_PROXIMITY_THRESHOLD=100
CONFIG_TFM_SECURE_UART=n
CONFIG_TFM_LOG_LEVEL_SILENCE=y
CONFIG_VL53L0X_RECONFIGURE_ADDRESS=y
#debug
#CONFIG_DEBUG=y
#CONFIG_LOG=y
#CONFIG_SENSOR_LOG_LEVEL_DBG=y
CONFIG_CBPRINTF_FP_SUPPORT=y

Whenever I run this code I get a ret error (-19) or sometimes (-5).

Any help is much appreciated!

Related