#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int potPin = 34; // Pin del potenciómetro
const int ntcPin = 35; // Pin del sensor NTC (analógico)
const int ds18b20Pin = 32; // Pin del sensor DS18B20 (digital)
const int ledPin = 33; // Pin del LED
OneWire oneWire(ds18b20Pin);
DallasTemperature ds18b20(&oneWire);
void setup() {
lcd.init();
lcd.backlight();
Serial.begin(115200);
pinMode(potPin, INPUT);
pinMode(ntcPin, INPUT);
pinMode(ledPin, OUTPUT);
ds18b20.begin();
lcd.setCursor(0, 0);
lcd.print("Iniciando...");
Serial.println("Iniciando...");
delay(1000);
}
void loop() {
int potValue = analogRead(potPin);
// Leer el valor del pin analógico del NTC
int ntcValue = analogRead(ntcPin);
// Convertir la lectura analógica a voltaje
float ntcVoltage = ntcValue * (3.3 / 4095.0);
// Convertir el voltaje a temperatura en grados Celsius
float ntcTempC = (ntcVoltage - 0.5) * 100;
ds18b20.requestTemperatures();
float ds18b20TempC = ds18b20.getTempCByIndex(0);
if (ntcTempC > 30 || ds18b20TempC > 40) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
lcd.setCursor(0, 0);
lcd.print("CONTROL DE SENSORES");
lcd.setCursor(0, 1);
lcd.print("Temp1: ");
lcd.print(ntcTempC);
//lcd.print(" C");
lcd.setCursor(0, 2);
lcd.print("POT:");
lcd.print(potValue);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print("Temp2: ");
//lcd.print(ds18b20TempC);
//lcd.print(" C");
if (ntcTempC > 30) {
lcd.print("NOVEDADES");
} else if (ds18b20TempC > 40) {
lcd.print(" S/N");
} else {
lcd.print(" S/N");
}
// Mostrar en el serial
Serial.print("POT: ");
Serial.print(potValue);
Serial.print(" | NTC Temp: ");
Serial.print(ntcTempC);
Serial.print(" C | DS18B20 Temp: ");
Serial.print(ds18b20TempC);
Serial.println(" C");
delay(1000);
}