// Breno Correia Lociks
// Exercício 5
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#include <DHTesp.h>
#define dataPin 12
#define R 16
#define G 17
#define B 5
const int OneWireBus = 4;
OneWire oneWire(OneWireBus);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27,16,2);
DHTesp dht;
int telaAtual = 0;
int tempoAnterior = 0;
void setup() {
Serial.begin(115200);
sensors.begin();
lcd.init();
lcd.setBacklight(HIGH);
dht.setup(dataPin, DHTesp::DHT22);
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
}
void loop() {
float t = dht.getTemperature();
float h = dht.getHumidity();
sensors.requestTemperatures();
float temperaturaC = sensors.getTempCByIndex(0);
float temperaturaF = sensors.getTempFByIndex(0);
if(millis() - tempoAnterior > 1000) {
tempoAnterior = millis();
Serial.print(temperaturaC);
Serial.println("ºC");
Serial.print(temperaturaF);
Serial.println("ºF");
Serial.println(" ");
Serial.print(t);
Serial.println("ºC");
Serial.print(h);
Serial.println("%");
if(telaAtual == 0) {
telaAtual = 1;
}
else if(telaAtual == 1) {
telaAtual = 0;
}
}
if(telaAtual == 0) {
lcd.setCursor(0,0);
lcd.print(temperaturaC);
lcd.print(" C ");
lcd.setCursor(0,1);
lcd.print(temperaturaF);
lcd.print(" F ");
}
if(telaAtual == 1) {
lcd.setCursor(0,0);
lcd.print(t);
lcd.print(" C ");
lcd.setCursor(0,1);
lcd.print(h);
lcd.print(" % ");
}
if(t > 30) {
digitalWrite(R, HIGH);
digitalWrite(G, LOW);
digitalWrite(B, LOW);
}
if(t < 30 && t > 20) {
digitalWrite(R, LOW);
digitalWrite(G, HIGH);
digitalWrite(B, LOW);
}
if(t < 19) {
digitalWrite(R, LOW);
digitalWrite(G, LOW);
digitalWrite(B, HIGH);
}
}