// Biblioteca que será utilizada
#include <LiquidCrystal_I2C.h>
// Configuração: Endereço I2C, Colunas, Linhas
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int POT = 25;
const int aquecedor = 5;
const int ventilador = 4;
const int arCondicionado = 2;
const int botaoDesliga = 23;
const int botaoLiga = 19;
// D22 - LCD SCL
// D21 - LCD SDA
// D5 - Aquecedor (Led Vermelho)
// D4 - Ventilador (Led Verde)
// D2 - Ar Condicionado (Led Azul)
// D25 - Valor da Temperatura (potenciometro)
// D19 - Botao Liga (Verde)
// D23 - Botao Desliga (Vermelho)
void setup() {
// Configuração do número de linhas e colunas do LCD
lcd.begin(16, 2); // Nº de Colunas e Linhas do Display
lcd.init(); // Inicializa o Display
lcd.backlight(); // Liga o BackLight
// Entrada
pinMode(botaoLiga, INPUT);
pinMode(botaoDesliga, INPUT);
pinMode(POT, INPUT);
Serial.begin(115200);
analogReadResolution(12);
// Saídas
pinMode(aquecedor, OUTPUT);
pinMode(ventilador, OUTPUT);
pinMode(arCondicionado, OUTPUT);
}
int modo = 0;
void loop() {
// Valor Temperatura
int valorPot = analogRead(POT);
int valorPercentual = valorPot/40.95;
/*
modo 0 = Sistema Desligado
modo 1 = Sistema Ligado
*/
if(digitalRead(botaoDesliga) == HIGH){
modo = 0;
}
else if(digitalRead(botaoLiga) == HIGH){
modo = 1;
}
if(modo == 0){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Sistema");
lcd.setCursor(0,1);
lcd.print("Desligado");
digitalWrite(aquecedor, LOW);
digitalWrite(ventilador, LOW);
digitalWrite(arCondicionado, LOW);
modo = 2;
}
if(modo == 1){
// Liga Aquecedor
if(valorPercentual < 10){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(String("Temp: ") + String(valorPercentual) + String("C"));
lcd.setCursor(0,1);
lcd.print("AQUECEDOR (ON)");
digitalWrite(aquecedor, HIGH);
digitalWrite(ventilador, LOW);
digitalWrite(arCondicionado, LOW);
}
// Liga Ventilador
if(valorPercentual >= 10 && valorPercentual <= 20){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(String("Temp: ") + String(valorPercentual) + String("C"));
lcd.setCursor(0,1);
lcd.print("VENTILADOR (ON)");
digitalWrite(aquecedor, LOW);
digitalWrite(ventilador, HIGH);
digitalWrite(arCondicionado, LOW);
}
// Liga Ar Condicionado
if(valorPercentual > 20){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(String("Temp: ") + String(valorPercentual) + String("C"));
lcd.setCursor(0,1);
lcd.print("AR-COND. (ON)");
digitalWrite(aquecedor, LOW);
digitalWrite(ventilador, LOW);
digitalWrite(arCondicionado, HIGH);
}
}
delay(100);
}