#include <Wire.h>
#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_Kelvin = 298.15; // use T0 in Kelvin [K]
float Vout = 0.0; // Vout in A0
float Rout = 0.0; // Rout in A0
float T1_Kelvin = 273.15; // [K] in datasheet 0º C
float T2_Kelvin = 373.15; // [K] in datasheet 100° C
float RT1 = 35563; // [ohms] resistance in T1
float RT2 = 549; // [ohms] resistance 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
LiquidCrystal_I2C mylcd(0x27, 16, 2);
#define NTC 35
void setup() {
mylcd.init();
mylcd.backlight();
pinMode(NTC, INPUT);
// Parameters for NTC calculation
beta = (log(RT1 / RT2)) / ((1 / T1_Kelvin) - (1 / T2_Kelvin));
Rinf = R0 * exp(-beta / T0_Kelvin);
}
void loop() {
// NTC calculation
Vout = Vin * ((float)(analogRead(NTC)) / 4096.0);
Rout = (Rt * Vout / (Vin - Vout));
TempK = (beta / log(Rout / Rinf)); // calc for temperature
TempC = TempK - 273.15;
// Display temperature on LCD
mylcd.setCursor(0, 0);
mylcd.print("Temperature: ");
mylcd.setCursor(0, 1);
mylcd.print(TempC);
mylcd.write(0xdf); // to display °
mylcd.print("C ");
mylcd.print((TempC * 9) / 5 + 32); // C to F
mylcd.write(0xdf);
mylcd.print("F");
}