#include <SoftWire.h>
#include <Adafruit_BMP085.h>
#include <DHT.h>
#include <DHT_U.h>
#include <LiquidCrystal.h>
// Definición de pines
#define SENSOR 2 // Pin DATA de DHT22 a pin digital 2
#define BMP180_SDA A4 // Pin SDA del BMP180
#define BMP180_SCL A3 // Pin SCL del BMP180
// Objetos para los sensores
DHT dht(SENSOR, DHT22);
SoftWire myWire(BMP180_SDA, BMP180_SCL);
Adafruit_BMP085 bmp;
// Pines LCD
#define RS 12 // Pin de selección de registro
#define EN 9 // Pin de habilitación
#define D4 5 // Pin de datos 4
#define D5 6 // Pin de datos 5
#define D6 7 // Pin de datos 6
#define D7 8 // Pin de datos 7
// Objeto para la pantalla LCD
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);
void setup() {
Serial.begin(9600); // Inicialización del monitor serial
dht.begin(); // Inicialización del sensor DHT22
lcd.begin(16, 2); // Inicializa la pantalla LCD
// Inicialización del SoftWire
myWire.begin();
bmp.begin(&myWire); // Inicialización del BMP180 usando SoftWire
}
void loop() {
// Lectura del DHT22
float temperatura_dht = dht.readTemperature(); // Obtención de valor de temperatura
float humedad = dht.readHumidity(); // Obtención de valor de humedad
// Lectura del BMP180
float temperatura_bmp = bmp.readTemperature();
float presion = bmp.readPressure() / 100.0F; // Convertir a hPa
// Imprime en la pantalla LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp DHT: ");
lcd.print(temperatura_dht);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Humedad: ");
lcd.print(humedad);
lcd.print("%");
delay(3000); // Mostrar los datos del DHT22 por 3 segundos
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Presion: ");
lcd.print(presion);
lcd.print("hPa");
// Imprime en el monitor serial
Serial.print("Temp DHT22: ");
Serial.print(temperatura_dht);
Serial.print(" Humedad: ");
Serial.println(humedad);
Serial.print("Temp BMP180: ");
Serial.print(temperatura_bmp);
Serial.print(" Presion: ");
Serial.println(presion);
delay(3000); // Mostrar los datos del BMP180 por 3 segundos
}