好吧,没人回。。。
研究了好久终于弄好了
顺便发发
#include "Wire.h" //IIC库
#include "math.h"
int BH1750address1 = 0x23;//芯片地址为16位23
int BH1750address2 = 0x5c;
byte buff[2];
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void loop()
{
int ia;
int ib;
int sumcd;
uint16_t vala = 0;
uint16_t valb = 0;
BH1750a_Init(BH1750address1);
BH1750b_Init(BH1750address2);
delay(1000);
if (2 == BH1750a_Read(BH1750address1))
{
vala = ((buff[0] << 8) | buff[1]) / 12 - 3;
}
if (2 == BH1750b_Read(BH1750address2))
{
valb = ((buff[0] << 8) | buff[1]) / 12;
}
delay(150);
Serial.print(vala, DEC);
Serial.print("/");
Serial.print(valb, DEC);
Serial.println("[lx]");
}
int BH1750a_Read(int address1) //
{
int ia = 0;
Wire.beginTransmission(address1);
Wire.requestFrom(address1, 2);
while (Wire.available()) //
{
buff[ia] = Wire.read(); // read one byte
ia++;
}
Wire.endTransmission();
return ia;
}
int BH1750b_Read(int address2) //
{
int ib = 0;
Wire.beginTransmission(address2);
Wire.requestFrom(address2, 2);
while (Wire.available()) //
{
buff[ib] = Wire.read(); // read one byte
ib++;
}
Wire.endTransmission();
return ib;
}
void BH1750a_Init(int address1)
{
Wire.beginTransmission(address1);
Wire.write(0x10);//1lx reolution 120ms
Wire.endTransmission();
}
void BH1750b_Init(int address2)
{
Wire.beginTransmission(address2);
Wire.write(0x10);//1lx reolution 120ms
Wire.endTransmission();
} |