#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Configuración de la pantalla LCD I2C
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Configuración del sensor DS18B20
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Configuración del LED y el sensor NTC
const int ntcPin = 4; // Entrada del sensor NTC
const int ledPin = 13; // Pin del LED
void setup() {
pinMode(ledPin, OUTPUT);//ledpin como salida
// Inicializar la pantalla LCD con el número de columnas y filas
lcd.init();
lcd.backlight();
}
void loop() {
// Leer valor del sensor NTC
int ntcValue = analogRead(ntcPin);
float ntcTemp = map(ntcValue, 0, 1023, -40, 125); // Ajustar el mapeo según tu sensor
// Leer valor del sensor DS18B20
sensors.requestTemperatures();//variable de la librería
float ds18b20Temp = sensors.getTempCByIndex(0);
// Control del LED según NTC
if (ntcTemp > 30) {
temperatura();
} else {
digitalWrite(ledPin, LOW);
lcd.setCursor(0, 0);
lcd.print("NTC <= 30C: LED OFF");
}
// Control del LED según DS18B20
if (ds18b20Temp > 40) {
digitalWrite(ledPin, HIGH);
lcd.setCursor(0, 1);
lcd.print("DS18B20 > 40C: ON ");
} else {
digitalWrite(ledPin, LOW);
lcd.setCursor(0, 1);
lcd.print("DS18B20 <= 40C: OFF");
}
delay(1000); // Actualizar cada segundo
}
void temperatura(){ digitalWrite(ledPin, HIGH);
lcd.setCursor(0, 0);
lcd.print("NTC > 30C: LED ON ");
}