|
|
在 X宝 买了一块 BH1750FVI 传感器,连线正常,在光照程度不太高的情况下,读取数值是正常的。
但是到了太阳太亮的时候,经常读出来的值是 0。这个时候拿块半透明纸片把传感器遮住,就又能读出数值了。
请问这是传感器坏了,还是其他问题?
- #include <Wire.h> //IIC
- #include <math.h>
- // ����ǿ��
- // BH1750FVI
- // in ADDR 'L' mode 7bit addr
- #define ADDR 0b0100011
- // addr 'H' mode
- // #define ADDR 0b1011100
- int BH1750address = 0x23;
- byte buff[2];
- void setup()
- {
- Wire.begin();
- Serial.begin(9600);
- }
- void loop()
- {
- int i;
- uint16_t val = 0;
- BH1750_Init(BH1750address);
- delay(200);
- if (2 == BH1750_Read(BH1750address))
- {
- val = ((buff[0] << 8) | buff[1]) / 1.2;
- Serial.print(val, DEC);
- Serial.println("[lx]");
- }
- delay(150);
- }
- int BH1750_Read(int address) //
- {
- int i = 0;
- Wire.beginTransmission(address);
- Wire.requestFrom(address, 2);
- while (Wire.available()) //
- {
- buff[i] = Wire.read(); // receive one byte
- i++;
- }
- Wire.endTransmission();
- return i;
- }
- void BH1750_Init(int address)
- {
- Wire.beginTransmission(address);
- Wire.write(0x10);//1lx reolution 120ms
- Wire.endTransmission();
- }
复制代码 |
|