中潭路948923 发表于 2017-8-10 11:24:58

求助 两个 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();

}

通幽境 发表于 2017-8-11 02:08:46

晕,连问题是啥都没说。。

123liyao 发表于 2018-5-31 22:11:02

老兄,解决了吗
页: [1]
查看完整版本: 求助 两个 GY-30 同时显示的问题