求助 两个 GY-30 同时显示的问题
我们 用的Arduino mega2560 相同时i2c 读两个GY-30求助各位大神
程序如下
#include <Wire.h> //IIC库
#include <math.h>
int BH1750address1 = 0x23;//芯片地址为16位23
int BH1750address2 = 0x5c;
byte buff;
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void loop()
{
int ia;
int ib;
uint16_t vala=0;
uint16_t valb=0;
BH1750a_Init(BH1750address1);
BH1750b_Init(BH1750address2);
delay(1000);
if(2==BH1750a_Read(BH1750address1))
{
vala=((buff<<8)|buff)/12-3;}
if(2==BH1750b_Read(BH1750address2))
{
valb=((buff<<8)|buff)/12;}
delay(150);
Serial.print(vala,DEC);
Serial.print("/");
Serial.print(valb,DEC);
Serial.println("");
}
int BH1750a_Read(int address1) //
{
int ia=0;
Wire.beginTransmission(address1);
Wire.requestFrom(address1, 2);
while(Wire.available()) //
{
buff = 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 = 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();
} 晕,连问题是啥都没说。。 老兄,解决了吗
页:
[1]