ALguien podría ayudarme a comunicar 2 sensores de luz.
ya he trabajado antes con uno solo, y no he tenido problemas.
el Sensor BH1750 se comunica al arduino por I2C y admite 2 direcciones distintas: 0x5C y 0x23 para cambiar la direccion de unou otro basta con conectar del Pin ADD a negativo(0x23) o positivo(0x5C), esto me funciona bien, tengo los 2 sensores conectados uno a cada direccion correspondiente, le cargo el programa y me funciona bien (ya probé con las 2 direcciones).
Por lo tanto estoy seguro que mi problema no es de conexion, y evidentemente el problema esta en el programa.
ESTE ES EL PROGRAMA ORIGINAL:
#include <Wire.h>
int BH1750_address = 0x5c; // i2c Addresse
byte buff[2];
void setup(){
Wire.begin();
BH1750_Init(BH1750_address);
delay(200);
Serial.begin(9600);
Serial.println("Starte Beleuchtungsstaerkemessung - blog.simtronyx.de");
}
void loop(){
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.println(" lx");
}
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;
}
entiendo pero en la parte del final me pierdo un poco (desde el ultimo void)
intenté modificar el programa original, duplicando las variables poniendole la letra A a uno y la letra B al otro, pero no pude compilar el programa sin error.
creo que mi problema va por aquí:
void BH1750_Init(int address)
no se como duplicar ese void, no tengo muy claro a q se refiere (ojala alguien me pueda explicar)
No soy muy experto en el tema, si alguien tiene mayor experiencia q pueda echarme una mano se lo agradezco de antemano
Saludos
ESTE ES EL PROGRAMA QUE MODIFIQUE (ME MARCA ERROR):
#include <Wire.h>
int BH1750_address_A = 0x23; // i2c Addresse
int BH1750_address_B = 0x5c; // i2c Addresse
byte buff_A[2];
byte buff_B[2];
void setup(){
Wire.begin();
BH1750_Init(BH1750_address_A);
delay(100);
BH1750_Init(BH1750_address_B);
delay(100);
Serial.begin(9600);
Serial.println("Starte Beleuchtungsstaerkemessung - blog.simtronyx.de");
}
void loop(){
float valf_A=0;
float valf_B=0;
if(BH1750_Read(BH1750_address_A)==2){
valf_A=((buff_A[0]<<8)|buff_A[1])/1.2;
if(valf_A<0)Serial.print("> 65535");
else Serial.print((int)valf_A,DEC);
Serial.println(" lx");
}
delay(500);
if(BH1750_Read(BH1750_address_B)==2){
valf_A=((buff_A[0]<<8)|buff_A[1])/1.2;
if(valf_A<0)Serial.print("> 65535");
else Serial.print((int)valf_A,DEC);
Serial.println(" lx");
}
delay(500);
}
void BH1750_Init(int address_A){
Wire.beginTransmission(address_A);
Wire.write(0x10); // 1 [lux] aufloesung
Wire.endTransmission();
}
void BH1750_Init(int address_B){
Wire.beginTransmission(address_B);
Wire.write(0x10); // 1 [lux] aufloesung
Wire.endTransmission();
}
byte BH1750_Read(int address_A){
byte i=0;
Wire.beginTransmission(address_A);
Wire.requestFrom(address_A, 2);
while(Wire.available()){
buff_A[i] = Wire.read();
i++;
}
byte BH1750_Read(int address_B){
byte i=0;
Wire.beginTransmission(address_B);
Wire.requestFrom(address_B, 2);
while(Wire.available()){
buff_B[i] = Wire.read();
i++;
}
Wire.endTransmission();
return i;
}
ME MARCA ESTE ERROR:
ERROR: exit status 1
redefinition of 'void BH1750_Init(int)'