#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <math.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define SENSOR_ELETRICO 34
#define SENSOR_GAS 35
#define RELE_ELETRICO 25
#define RELE_GAS 26
#define TEMP_ALVO 40
#define BETA 3950
#define LIGA LOW
#define DESLIGA HIGH
float lerTemp(int pin) {
int adc = analogRead(pin);
if (adc <= 0) adc = 1;
if (adc >= 4095) adc = 4094;
float resistencia = 10000.0 * (4095.0 / adc - 1.0);
float temp = 1.0 / ((log(resistencia / 10000.0) / BETA) + (1.0 / 298.15));
temp -= 273.15;
return temp;
}
void setup() {
lcd.init();
lcd.backlight();
pinMode(RELE_ELETRICO, OUTPUT);
pinMode(RELE_GAS, OUTPUT);
analogReadResolution(12);
digitalWrite(RELE_ELETRICO, LIGA);
digitalWrite(RELE_GAS, LIGA);
}
void loop() {
float tEletrico = lerTemp(SENSOR_ELETRICO);
float tGas = lerTemp(SENSOR_GAS);
if (tGas >= TEMP_ALVO) {
digitalWrite(RELE_ELETRICO, DESLIGA);
digitalWrite(RELE_GAS, LIGA);
} else {
digitalWrite(RELE_ELETRICO, LIGA);
digitalWrite(RELE_GAS, LIGA);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("E:");
lcd.print(tEletrico,1);
lcd.print(" G:");
lcd.print(tGas,1);
lcd.setCursor(0,1);
if (tGas >= TEMP_ALVO) {
lcd.print("Gas ON");
} else {
lcd.print("Ele+Gas ON");
}
delay(1000);
}