como leer 2 sensores de luz GY-30 (BH1750) a la vez I2C

ya solucioné el problema este es el codigo final:

#include <Wire.h>

int BH1750_address = 0x5c; // i2c Addresse
byte buff[2];

const int ADDR1 = 11;      // GY-30 BH1750FVI(1)
const int ADDR2 = 12;      // GY-30 BH1750FVI(2)


void setup(){

 pinMode(ADDR1, OUTPUT);
 pinMode(ADDR2, OUTPUT);
 
  Wire.begin();
  BH1750_Init(BH1750_address);

  delay(200);
  Serial.begin(9600);
  Serial.println("Prueba 2 sensores de luz GY-30 BH1750FVI");
  }

void loop(){

 digitalWrite(ADDR1, HIGH); // ASIGNAR DIRECCION 0X5C A GY-30(1)
 digitalWrite(ADDR2, LOW); // ASIGNAR DIRECCION 0X23 A GY-30(2)
 
  float valf=0;

  if(BH1750_Read(BH1750_address)==2){

    valf=((buff[0]<<8)|buff[1])/1.2;

    if(valf<0)Serial.print("> 65535");
    else Serial.print((int)valf,DEC); 

    Serial.print(" lx(1)     ----   "); 
  }




 digitalWrite(ADDR2, HIGH); // ASIGNAR DIRECCION 0X5C A GY-30(2)
 digitalWrite(ADDR1, LOW); // ASIGNAR DIRECCION 0X23 A GY-30(1)
 
valf=0;

  if(BH1750_Read(BH1750_address)==2){

    valf=((buff[0]<<8)|buff[1])/1.2;

    if(valf<0)Serial.print("> 65535");
    else Serial.print((int)valf,DEC); 

    Serial.println(" lx(2)"); 
  }
  delay(1000);



   
}

void BH1750_Init(int address){

  Wire.beginTransmission(address);
  Wire.write(0x10); // 1 [lux] aufloesung
  Wire.endTransmission();
}

byte BH1750_Read(int address){

  byte i=0;
  Wire.beginTransmission(address);
  Wire.requestFrom(address, 2);
  while(Wire.available()){
    buff[i] = Wire.read(); 
    i++;
  }
  Wire.endTransmission();  
  return i;
}
1 Like