#include <LiquidCrystal_I2C.h> // Librería del LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Dirección y tamaño del LCD
const int ntcPin = A0; // Pin de lectura del NTC
const int fanPin = 8; // Pin del ventilador (LED)
const float umbral = 28.0; // Temperatura umbral para encender el ventilador
void setup() {
lcd.init(); lcd.backlight(); // Inicializa el LCD
pinMode(fanPin, OUTPUT); // Configura el pin del ventilador como salida
}
void loop() {
int valor = analogRead(ntcPin); // Lee el valor ADC del divisor de tensión
float tempC = calcularTemp(valor); // Convierte ese valor a temperatura
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.print((char)223); // Símbolo de grados
lcd.print("C "); // Espacios para limpiar caracteres residuales
if (tempC >= umbral) {
digitalWrite(fanPin, HIGH); // Enciende ventilador
lcd.setCursor(0, 1);
lcd.print("VENTILADOR: ON ");
} else {
digitalWrite(fanPin, LOW); // Apaga ventilador
lcd.setCursor(0, 1);
lcd.print("VENTILADOR: OFF");
}
delay(1000); // Espera 1 segundo
}
// Función para calcular temperatura con NTC "arriba"
float calcularTemp(int adc) {
float R = 10000.0 * (float(adc) / (1023.0 - adc)); // cálculo con NTC conectado a 5V
float tempK = 1.0 / (log(R / 10000.0) / 3950 + 1.0 / 298.15); // Ecuación Steinhart-Hart
return tempK - 273.15; // Convertimos de Kelvin a Celsius
}