domingo, 3 de agosto de 2014

Arduino + sensor digital de luminosidade BH1750FV + LCD I2C




O sensor BH1750FV é um senso digital de luminosidade com comunicação I2C.

Sua utilização é bastante simples pois, oferece em sua saída o valor pronto para uso em Lux dispensando cálculos e calibrações.

 As características básicas são:

>> Tensão de alimentação: 3V-5V;
>>  Faixa de medição: 0-65535 lux;
>> Conversor adc integrado: 16 bits;
>>  Saída digital direta dispensa cálculos complexos ou calibração;
>>  Dois endereços possíveis. Permitindo a ligação de dois módulos no mesmo microcontrolador:
   0x5C (pino ADD em nível alto) e 0x23 (pino add em nível baixo, padrão).

Ligações para o exemplo do vídeo:



O código exemplo abaixo é uma adaptação para display I2C do código que acompanha a biblioteca para arduino disponibilizada por Genotronex em: https://github.com/Genotronex/BH1750FVI_Master

A biblioteca LCD_I2C também é utilizada.


 /*
Adaptação para display 12c por MelquíadesJR do código escrito por Mohannad Rawashdeh 
como exemplo da biblioteca: https://github.com/Genotronex/BH1750FVI_Master

  VCC >>> 3.3V
  SDA >>> A4 
  SCL >>> A5
  addr >> A3
  Gnd >>>Gnd
 
 */
 
 // Bibliotecas:
 #include <BH1750FVI.h> // biblioteca do sensor
 #include <Wire.h> // biblioteca I2C
 #include <LiquidCrystal_I2C.h>  // biblioteca para o display lcd
 LiquidCrystal_I2C lcd(0x27,16,2);
 
 uint16_t Light_Intensity=0;

 BH1750FVI LightSensor;  //instancia o sensor
 
void setup() {

  lcd.init();  // inicializa o lcd 
  lcd.backlight(); // acende o backlight do lcd 
 
  LightSensor.begin(); // inicializa o sensor 
  //endereço I2C 0x23 (Device_Address_L para endereço 0x5C)
  LightSensor.SetAddress(Device_Address_L); 
  LightSensor.SetMode(Continuous_H_resolution_Mode);

  lcd.setCursor(0, 0);
  lcd.print("BH1750 Sensor");
  lcd.setCursor(1, 1);
  lcd.print("Inciando..."); 
  delay(2000);
  lcd.clear();
 lcd.print(" Luminosidade:   ");
}
 
 void loop() {
   
   lcd.setCursor(5, 1);
   lcd.print("      ");
   lcd.setCursor(5, 1);
   Light_Intensity = LightSensor.GetLightIntensity();
   lcd.print(Light_Intensity);
   lcd.setCursor(10, 1);
   lcd.print("Lux");
   delay(500);
   
  
}

Nenhum comentário:

Postar um comentário