VL53L0X是TOF(Time Of Flight)传感器,字面上就是测量光线(激光)传播(飞行)的时间,来计算传感器到障碍物之间的距离的,就是下面这个小东西。
记录Arduino下使用它的几个要点。
一、所使用的库
有现成的库,库中搜索VL53L0X能找出来第三方的库(Vl53L0X by Pololu)。库写的挺好的,基本就是拿来就能用的那种。
二、使用中遇到的问题
该库有一个问题,其依赖于I2C库Wire.h,项目使用的时候,如果要多个I2C总线,库中没有说明怎么整。所以不得不研究下Arduino环境ESP32使用多条I2C总线的问题。
I2C总线有2种驱动方式,一种是硬件I2C,一种是软件I2C,这个在之前的一篇文章(micropython下如果使用ESP32的硬件I2C总线驱动OLED屏幕)中讲到过,关于区别可自行研究一下。
micropython使用了颇长时间,写代码挺高效的,但是后来遇到了LVGL移植的瓶颈,不得不放弃了micropython转而使用Arduino。
1.ESP32是有两条硬件I2C总线的,乐鑫提供的Wire库是直接调用硬件I2C的库
软件I2C驱动的方式,乐鑫并没有提供,Arduino第三方库中能搜到一些软件I2C的库,可自行移植,不是本文重点。
2.Wire库中其实直接把两条I2C总线对象给了出来
打开Wire.h,最后几行的定义能看到:
extern TwoWire Wi