极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13119|回复: 2

求助 两个 GY-30 同时显示的问题

[复制链接]
发表于 2017-8-10 11:24:58 | 显示全部楼层 |阅读模式
我们 用的Arduino mega2560 相同时i2c 读两个GY-30
求助各位大神
程序如下
#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;

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();

}
回复

使用道具 举报

发表于 2017-8-11 02:08:46 | 显示全部楼层
晕,连问题是啥都没说。。
回复 支持 反对

使用道具 举报

发表于 2018-5-31 22:11:02 | 显示全部楼层
老兄,解决了吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 14:09 , Processed in 0.045163 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表