#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define pinoNTC A1
float temp;
float celsius;
LiquidCrystal_I2C lcd(0x27,16,2);
int ledy = 10; // led amarelo. temp = 31 - 34 && 36 - 38
int ledr = 11; // led vermelho. temp > 39 C
int ledg = 12; // led verde. temp = 34 - 36 C
int controle = 5; // relé que ativa o aquecimento
void setup()
{
//define os pinos:
pinMode(ledy, OUTPUT); // LED amarelo como saída
pinMode(ledr, OUTPUT); // LED vermelho como saída
pinMode(ledg, OUTPUT); // LED verde como saída
pinMode(controle, OUTPUT); // relé como saída
lcd.init();
lcd.backlight();
lcd.clear();
}
void loop()
{
temp = analogRead(pinoNTC);
celsius = 1 / (log(1 / (1023. / temp - 1)) / 3950 + 1.0 / 298.15) - 273.15;
//erial.println(celsius);
if (celsius >= 34.0 && celsius <= 36.0) { // 34 - 36 C => OK | LED verde
digitalWrite(ledg, HIGH);
digitalWrite(ledy, LOW);
digitalWrite(ledr, LOW);
digitalWrite(controle, LOW);
lcd.setCursor(6,0);
lcd.print(": OK");
}
else if (celsius < 34.0) { // 31 - 34 C => ATENÇÃO | LED amarelo e ATIVA aquecimento
digitalWrite(ledg, LOW);
digitalWrite(ledy, HIGH);
digitalWrite(ledr, LOW);
digitalWrite(controle, HIGH); // aquecimento
lcd.setCursor(6,0);
lcd.print(": ATENCAO");
}
else if (celsius > 36.0 && celsius < 39.0) { // 36 - 38 C => ATENÇÃO | LED amarelo
digitalWrite(ledg, LOW);
digitalWrite(ledy, HIGH);
digitalWrite(ledr, LOW);
digitalWrite(controle, LOW);
lcd.setCursor(6,0);
lcd.print(": ATENCAO");
}
else if (celsius >= 39.0) { // ACIMA DE 39 C => PROBLEMA | LED vermelho
digitalWrite(ledg, LOW);
digitalWrite(ledy, LOW);
digitalWrite(ledr, HIGH);
digitalWrite(controle, LOW);
lcd.setCursor(6,0);
lcd.print(": PROBLEMA");
}
else { // caso default
// tudo desligado
digitalWrite(ledg, LOW);
digitalWrite(ledy, LOW);
digitalWrite(ledr, LOW);
digitalWrite(controle, LOW);
}
lcd.setCursor(0,0);
lcd.print("TANQUE");
lcd.setCursor(0, 1);
lcd.print("TEMP:");
lcd.print(celsius);
lcd.print("C");
delay(3000);
lcd.clear();
}