#include <OneWire.h>
#include <Wire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>;
#include <BH1750.h>
#define som 6
int botao = 4;
#define DHTPIN 2 // define o pino do sensor de humidade
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino
float hum; //Stores humidity value
const int PINO_ONEWIRE = 3; // Define pino do sensor temperatura
OneWire oneWire(PINO_ONEWIRE); // Cria um objeto OneWire
DallasTemperature sensor(&oneWire); // Informa a referencia da biblioteca dallas temperature para Biblioteca onewire
DeviceAddress endereco_temp; // Cria um endereco temporario da leitura do sensor
LiquidCrystal_I2C lcd(0x27,16,2);//inicializa uma instância da classe LiquidCrystal_I2C
BH1750 lightMeter;
byte grau[8] = {//cria o caracter °
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
B00000,
};
byte C[8] = {//cria o caracter C
B01110,
B10001,
B10000,
B10000,
B10000,
B10001,
B01110,
B00000,
};
byte porcem[8] = {//cria o caracter de %
B11000,
B11001,
B00010,
B00100,
B01000,
B10011,
B00011,
B00000,
};
void setup() {
pinMode(som, OUTPUT);
pinMode(botao, INPUT);
lcd.init(); // Inicia a tela lcd
dht.begin();// Inicia o sensor de umidade
sensor.begin(); ; // Inicia o sensor de temperatura
lightMeter.begin();// Inicia o sensor de luminosidade
lcd.createChar(1,grau);
lcd.createChar(2,C);
lcd.createChar(3,porcem);
}
void loop() {
int estadobotao = digitalRead(botao);
uint16_t lux = lightMeter.readLightLevel();
lcd.setBacklight(HIGH);
hum = dht.readHumidity();//Ler dados e armazená-los nas variáveis hum
sensor.requestTemperatures(); // Envia comando para realizar a conversão de temperatura
!sensor.getAddress(endereco_temp,0);// Encontra o endereco do sensor no barramento
lcd.setCursor(0,0);
lcd.print("Temp. = "); // Imprime a temperatura no monitor serial
lcd.print(sensor.getTempC(endereco_temp), 1); // Busca temperatura para dispositivo
lcd.write(1);
lcd.write(2);
lcd.setCursor(0,1);
lcd.print("Humidade= ");
lcd.print(hum);
lcd.write(3);
if(estadobotao == HIGH){
lcd.setCursor(0, 1);
lcd.print("Lumin.= ");
lcd.setCursor(8, 1);
lcd.print(lux);
lcd.print("Lux");
}
else{
lcd.setCursor(0,1);
lcd.print("Humidade= ");
lcd.print(hum);
lcd.write(3);
}
while(sensor.getTempC(endereco_temp) > 30.0){
digitalWrite(som, HIGH);
}
delay(1000);
}