#include <LiquidCrystal.h> // Biblioteca para controlar la pantalla LCD
// Inicialización de la pantalla LCD con los pines RS, E, D4, D5, D6, D7
LiquidCrystal lcd(11,10,9,8,7,6,5);
// Pin analógico al que está conectado el divisor resistivo con el termistor
int tempPin = A0;
void setup() {
lcd.begin(16, 2); // Inicializa LCD con 16 columnas y 2 filas
lcd.print("Iniciando...");
delay(1000);
lcd.clear();
}
void loop() {
// Lectura del valor analógico del divisor de tensión
int tempReading = analogRead(tempPin);
// Conversión del valor leído a resistencia y luego a temperatura
// Se calcula la resistencia del termistor NTC usando la fórmula del divisor:
// Vout = Vin * Rntc / (Rntc + Rfija) => Rntc = Rfija * (1023 / lectura - 1)
double resistance = 10000.0 * ((1024.0 / tempReading) - 1); // Rfija = 10kΩ
// Aplicación de la ecuación Steinhart-Hart (simplificada) para obtener temperatura en Kelvin
// Esta fórmula es aproximada y depende de coeficientes empíricos del NTC
double tempK = 1.0 / (0.001129148 + 0.000234125 * log(resistance) +
0.0000000876741 * pow(log(resistance), 3));
float tempC = tempK - 273.15; // Conversión de Kelvin a Celsius
float tempF = (tempC * 9.0) / 5.0 + 32.0; // Conversión a Fahrenheit
// Mostrar temperatura en la LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1); // Muestra con 1 decimal
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(tempF, 1);
lcd.print(" F");
delay(1000); // Actualiza cada segundo
}