#include <Wire.h>
#include <LiquidCrystal_I2C.h> //LIBRERIA PARA EL LCD
#include <OneWire.h>
#include <DallasTemperature.h> //LIBRERIA PARA EL SENSOR
#include <DS18B20.h> //LIBRERIA PARA EL SENSOR DS18B20
#define ONE_WIRE_BUS 2 // Pin para el DS18B20
#define NTC_PIN 14 // Pin analógico para el NTC
#define LED_PIN 4 // Pin para el LED
#define POT_PIN 0 // Pin del potenciómetro
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 20, 4); // Dirección I2C del LCD
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT); //configurar el modo de trabajo de un pin pudiendo ser I/O.
lcd.init();
lcd.backlight(); // Encender la luz de fondo del LCD
sensors.begin();
lcd.print("CONTROL DE SENSORES:"); //Presenta la primera linea en el LCD
}
void loop() {
sensors.requestTemperatures(); // Solicitar lectura de temperatura
float tempDS18B20 = sensors.getTempCByIndex(0); // Obtener temperatura DS18B20
int ntcValue = analogRead(NTC_PIN); // Leer el valor del NTC
float tempNTC = map(ntcValue, 0, 1023, 0, 100); // Mapeo a una escala de temperatura (ajustar según la caracterización)
// Enviar valores al Monitor Serial
Serial.print("DS18B20: ");
Serial.print(tempDS18B20);
Serial.print(" °C, NTC: ");
Serial.print(tempNTC);
Serial.println(" °C");
// Actualizar el LCD con las lecturas SUBFUNCION
mostrarTemperaturas(tempDS18B20, tempNTC);
// Lógica para el LED SUBFUNCION
controlarLED(tempDS18B20, tempNTC);
// Esperar un momento antes de la siguiente lectura
delay(1000);
}
// Función para mostrar las temperaturas en el LCD
void mostrarTemperaturas(float ds18b20, float ntc) {
lcd.setCursor(0, 1); // mostrar en columna 0 fila 1 del lcd
lcd.print("DS18B20: ");
lcd.print(ds18b20);
lcd.print(" C ");
lcd.setCursor(0, 2); // mostrar en columna 0 fila 2 del lcd
lcd.print("NTC: ");
lcd.print(ntc);
lcd.print(" C ");
}
// Función para controlar el estado del LED
void controlarLED(float ds18b20, float ntc) {
if (ds18b20 > 40 || ntc > 30) {
digitalWrite(LED_PIN, HIGH); // Encender LED
} else {
digitalWrite(LED_PIN, LOW); // Apagar LED
}
if (ds18b20 > 40){
lcd.setCursor(0, 4); // mostrar en columna 0 fila 4 del lcd
lcd.print("NOVEDADES!! ");}
}
Loading
ds18b20
ds18b20