#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
#include <OneWire.h>
#include <DallasTemperature.h>
//POTENCIOMETRO
#define pinPot 13
//TEMPERATURA
#define Temperature1 26
const float BETA = 3950;
//LED
#define pinLed 25
//TEMPERATURA 2
#define ONE_WIRE_BUS 14 // Pin de datos del DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
sensors.begin();
Serial.begin(115200);
analogReadResolution(10);
pinMode(Temperature1,INPUT);
pinMode(pinPot, INPUT); //Definir pot como entrada
pinMode(pinLed, OUTPUT);
// Init
lcd.init();
lcd.backlight();
}
void loop() {
// Pedir la lectura de la temperatura
sensors.requestTemperatures();
// Leer la temperatura en grados Celsius
float temperature = sensors.getTempCByIndex(0);
//Leer potenciometro
int potValue = analogRead(pinPot);
//TEMP1
int analogValue = analogRead(Temperature1);
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
//Presentar en Serial
Serial.print("Temperatura2: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("POT: ");
Serial.println(potValue);
Serial.print("Temperatura1: ");
Serial.print(celsius);
Serial.println(" ℃");
if(celsius>30)
digitalWrite(pinLed, HIGH);
else
digitalWrite(pinLed, LOW);
//Presentar en LCD
lcd.setCursor(0, 0);
lcd.print("CONTROL DE SENSORES");
lcd.setCursor(0, 1);
lcd.print("TEMP 1: ");
lcd.print(celsius);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print("POT: ");
lcd.print(potValue);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print("TEMP 2: S/N ");
lcd.print(" ");
// Definir el umbral de temperatura
float threshold = 40.0; // Ajusta este valor según tus necesidades
// Encender o apagar el LED según la temperatura
if (temperature > threshold) {
digitalWrite(pinLed, HIGH); // Encender el LED
lcd.setCursor(0, 3);
lcd.print("TEMP 2: NOVEDADES!!!! ");
} else {
digitalWrite(pinLed, LOW); // Apagar el LED
}
}