cciew 发表于 2018-3-22 10:24:05

多个 VL53L0 红外线测距芯片IIC总线一个地址使用方法

要点:XSHUT是VL53L0的休眠针脚,3.3v电平直接使用,也可串联一个二极管,使用5v电平。当XSHUT引脚拉低,传感器进入休眠模式,高电平是恢复工作。

相关文献:http://www.st.com/content/ccc/resource/technical/document/application_note/group0/0e/0a/96/1b/82/19/4f/c2/DM00280486/files/DM00280486.pdf/jcr:content/translations/en.DM00280486.pdf
相关库:

https://github.com/pololu/vl53l0x-arduino

原理图:


源程序:
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
int Tong_FuJi= 7;
int vl53l0_1_XSHUT= 8;
int vl53l0_2_XSHUT= 9;
void setup()
{
Serial.begin(9600);
pinMode(Tong_FuJi, OUTPUT);   
digitalWrite(Tong_FuJi, HIGH);
pinMode(vl53l0_1_XSHUT, OUTPUT);
pinMode(vl53l0_2_XSHUT, OUTPUT);
}
void loop()
{ digitalWrite(vl53l0_1_XSHUT, HIGH);
Wire.begin();
sensor.init();
sensor.setTimeout(5000);
sensor.startContinuous();
Serial.print("vl53l0_1:");
Serial.println(sensor.readRangeContinuousMillimeters());
digitalWrite(vl53l0_1_XSHUT, LOW);
delay(10);

digitalWrite(vl53l0_2_XSHUT, HIGH);
Wire.begin();
sensor.init();
sensor.setTimeout(5000);
sensor.startContinuous();
Serial.print("vl53l0_2:");
Serial.println(sensor.readRangeContinuousMillimeters());
digitalWrite(vl53l0_2_XSHUT, LOW);
delay(1000);

if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
}

wing 发表于 2018-3-22 10:56:16

啊!!红外??
我一直以为VL53L0X是激光呢

Ansifa 发表于 2018-3-22 14:55:34

确定是激光的,红外激光

zoologist 发表于 2018-3-22 16:53:30

我看过 spec 上面说可以重新设定他的地址的,

不过我没有研究明白

wing 发表于 2018-3-23 11:47:23

zoologist 发表于 2018-3-22 16:53
我看过 spec 上面说可以重新设定他的地址的,

不过我没有研究明白

大神,如果您研究出来了,记得分享一下,我很想知道怎么修改地址。
8266实在是拿不出更多的GPIO来做片选

cciew 发表于 2018-3-23 12:42:10

修改地址:
void setAddress(uint8_t new_addr)
Changes the I2C slave device address of the VL53L0X to the given value (7-bit).

cciew 发表于 2018-3-23 12:43:54

这样写试试:
sensor.setAddress(0x28);

wing 发表于 2018-3-27 11:15:30

嗯嗯,我试试能不能改地址
页: [1]
查看完整版本: 多个 VL53L0 红外线测距芯片IIC总线一个地址使用方法