#include <LiquidCrystal_I2C.h>
float Vin=5.0; // [V]
float Rt=10000; // Resistor t [ohm]
float R0=10000; // value of rct in T0 [ohm]
float T0=298.15; // use T0 in Kelvin [K]
float Vout=0.0; // Vout in A0
float Rout=0.0; // Rout in A0
// use the datasheet to get this data.
float T1=273.15; // [K] in datasheet 0º C
float T2=373.15; // [K] in datasheet 100° C
float RT1=35563; // [ohms] resistence in T1
float RT2=549; // [ohms] resistence in T2
float beta=0.0; // initial parameters [K]
float Rinf=0.0; // initial parameters [ohm]
float TempK=0.0; // variable output
float TempC=0.0; // variable output
int ledY = 3;
int ledO = 4;
int ledDG = 5;
int ledP = 6;
int ledR = 7;
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
lcd.begin(16,2);
lcd.backlight();
pinMode(0, INPUT);
pinMode(ledY, OUTPUT);
pinMode(ledO, OUTPUT);
pinMode(ledDG, OUTPUT);
pinMode(ledP, OUTPUT);
pinMode(ledR, OUTPUT);
//parâmetros
beta=(log(RT1/RT2))/((1/T1)-(1/T2));
Rinf=R0*exp(-beta/T0);
}
void loop()
{
Vout=Vin*((float)(analogRead(A0))/1024.0); // calc for ntc
Rout=(Rt*Vout/(Vin-Vout));
TempK=(beta/log(Rout/Rinf)); // calc for temperature
TempC=TempK-273.15;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temperature: ");
lcd.setCursor(0,1);
lcd.print(TempC);
lcd.write(0xdf); // to display °
lcd.print("C ");
lcd.print((TempC * 9)/5 + 32); // C to F
lcd.write(0xdf);
lcd.print("F");
delay(1500);
if (TempC <= -0) {
digitalWrite(ledY, HIGH);
digitalWrite(ledO, LOW);
digitalWrite(ledDG, LOW);
digitalWrite(ledP, LOW);
digitalWrite(ledR, LOW);
//lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp: Very Cold");
delay(1500);
} else if (TempC <= 15) {
digitalWrite(ledY, LOW);
digitalWrite(ledO, HIGH);
digitalWrite(ledDG, LOW);
digitalWrite(ledP, LOW);
digitalWrite(ledR, LOW);
//lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp: Cold");
delay(1500);
} else if (TempC <= 25) {
digitalWrite(ledY, LOW);
digitalWrite(ledO, LOW);
digitalWrite(ledDG, HIGH);
digitalWrite(ledP, LOW);
digitalWrite(ledR, LOW);
//lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp: Normal");
delay(1500);
} else if (TempC <= 37) {
digitalWrite(ledY, LOW);
digitalWrite(ledO, LOW);
digitalWrite(ledDG, LOW);
digitalWrite(ledP, HIGH);
digitalWrite(ledR, LOW);
//lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp: Hot");
delay(1500);
} else if (TempC >= 38) {
digitalWrite(ledY, LOW);
digitalWrite(ledO, LOW);
digitalWrite(ledDG, LOW);
digitalWrite(ledP, LOW);
digitalWrite(ledR, HIGH);
//lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp: Very Hot");
delay(1500);
}
// else {
// digitalWrite(ledDG, HIGH);
// }
// delay(1500);
}