#include <LiquidCrystal.h>
#include <DHT.h> // Librería para el sensor DHT
// Definir los pines de las dos pantallas LCD
LiquidCrystal lcd1(12, 11, 5, 4, 3, 2); // LCD1 para parámetros de incubadora
LiquidCrystal lcd2(9, 8, 7, 6, A4, A5); // LCD2 para mostrar la temperatura y humedad del bebé
// Pines para los potenciómetros de la incubadora
const int pinPotOxigeno = A0;
const int pinPotHumedad = A1;
const int pinPotTemperatura = A2;
const int pinPotFlujoAire = A3;
// Definición del sensor DHT
#define DHTPIN A5 // Pin donde se conecta el sensor DHT
#define DHTTYPE DHT11 // Tipo de sensor (DHT11 o DHT22)
DHT dht(DHTPIN, DHTTYPE); // Inicializar el sensor DHT
// Variables para almacenar los valores de la incubadora
int nivelOxigeno;
int nivelHumedad;
int nivelTemperatura;
int flujoAire;
// Variables para almacenar los valores del bebé (sensor DHT)
float tempBebe;
float humBebe;
void setup() {
// Configuración inicial de las dos pantallas LCD
lcd1.begin(16, 2); // Iniciar la primera pantalla LCD de 16x2
lcd2.begin(16, 2); // Iniciar la segunda pantalla LCD de 16x2
// Mostrar mensajes de inicio
lcd1.print("Incubadora Neo");
lcd2.print("Datos del Bebe");
delay(2000); // Espera 2 segundos
lcd1.clear();
lcd2.clear();
// Iniciar el sensor DHT
dht.begin();
}
void loop() {
// Leer los valores de los potenciómetros (incubadora)
nivelOxigeno = analogRead(pinPotOxigeno) / 10.24; // 0-100%
nivelHumedad = analogRead(pinPotHumedad) / 10.24; // 0-100%
nivelTemperatura = analogRead(pinPotTemperatura) * (50.0 / 1023.0); // 0-50 grados C
flujoAire = analogRead(pinPotFlujoAire) / 10.24; // 0-100%
// Leer los valores de temperatura y humedad del bebé del sensor DHT
tempBebe = dht.readTemperature(); // Leer temperatura en grados Celsius
humBebe = dht.readHumidity(); // Leer humedad en porcentaje
// Verificar si la lectura del sensor fue exitosa
if (isnan(tempBebe) || isnan(humBebe)) {
lcd2.clear();
lcd2.setCursor(0, 0);
lcd2.print("Error de Sensor");
} else {
// Limpiar las pantallas LCD
lcd1.clear();
lcd2.clear();
// Mostrar los valores en la primera LCD (incubadora)
lcd1.setCursor(0, 0);
lcd1.print("Ox: ");
lcd1.print(nivelOxigeno);
lcd1.print("%");
lcd1.setCursor(8, 0);
lcd1.print("Hum: ");
lcd1.print(nivelHumedad);
lcd1.print("%");
lcd1.setCursor(0, 1);
lcd1.print("Temp: ");
lcd1.print(nivelTemperatura);
lcd1.print("C");
lcd1.setCursor(8, 1);
lcd1.print("Flujo: ");
lcd1.print(flujoAire);
lcd1.print("%");
// Mostrar los valores del bebé en la segunda LCD
lcd2.setCursor(0, 0);
lcd2.print("TempBebe: ");
lcd2.print(tempBebe);
lcd2.print("C");
lcd2.setCursor(0, 1);
lcd2.print("HumBebe: ");
lcd2.print(humBebe);
lcd2.print("%");
}
// Esperar 1 segundo antes de actualizar las pantallas
delay(1000);
}