Python读取激光测距传感器(VL53L0X)

  • VL53L0X是一个以IIC驱动的光学距离传感器,测距范围5cm-2m,误差在3%以内

硬件及连接

  • 典型电路图如下:

软件驱动

  • 直接将驱动封装为了一个文件如下:
from machine import Pin, I2C
import time

class VL53L0X:

    _I2C_ADDR = 0x29

    # 寄存器地址
    _REG_SYSRANGE_START = 0x00
    _REG_RESULT_RANGE_STATUS = 0x14
    _REG_TIME_BUDGET=0x51
    _REG_MEASURE_MODE=0x4b
    def __init__(self, i2c):
        self.i2c = i2c
        self.InivDev()

    def InivDev(self):
        # 启动测量
        self.i2c.writeto(self._I2C_ADDR, bytearray([self._REG_MEASURE_MODE, 0x00]))
        self.i2c.writeto(self._I2C_ADDR, bytearray([self._REG_SYSRANGE_START, 0x01]))
    def SetAccu(self,t=100):
        val1=int(t*1000)&0xff00>>8;val2=int(t*1000)&0xff
        self.i2c.writeto_mem(self._I2C_ADDR, self._REG_TIME_BUDGET,bytearray([ val1, val2]))
    def Distance(self):
        # 等待测量完成
        self.InivDev()
        #time.sleep_ms(100)
        while True:
            status = self.i2c.readfrom_mem(self._I2C_ADDR, self._REG_RESULT_RANGE_STATUS, 1)[0]
            if status & 0x01:
                break
            time.sleep_ms(10)

        # 读取测量结果
        distance = self.i2c.readfrom_mem(self._I2C_ADDR, 0x14, 12)
        return ((distance[10] << 8) + distance[11])/1000.0




作者:admin  创建时间:2024-04-23 10:32
最后编辑:admin  更新时间:2024-07-17 11:01