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
最后编辑:admin 更新时间:2024-07-17 11:01