#include <DHTesp.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
int triggerPin = 18;
int echoPin = 19;
int dhtPin = 1;
long cm = 0;
long t1 = 0;
long t2 = 0;
long leeDistancia(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT); // Borra el trigger
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH); // activa el trigger durante 10 microsegundos
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
return pulseIn(echoPin, HIGH); // lee la anchura del pulso en microsegundos
}
DHTesp dht;
LiquidCrystal_I2C lcd(0x27,20,4);
void setup() {
Serial.begin(115200);
dht.setup(dhtPin, DHTesp::DHT22);
Serial.println("DHT initiated");
Wire.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Dist: ");
lcd.setCursor(0,1);
lcd.print("Temp: ");
lcd.setCursor(0,2);
lcd.print("Hum: ");
}
void loop() {
if (millis()-t1 > 2000) {
TempAndHumidity newValues = dht.getTempAndHumidity();
lcd.setCursor(7,1);
lcd.print(String(newValues.temperature));
lcd.print(" C");
lcd.print(" ");
lcd.setCursor(6,2);
lcd.print(String(newValues.humidity));
lcd.print(" %");
lcd.print(" ");
t1 += 2000;
}
if (millis()-t2 > 1000) {
lcd.setCursor(7,0);
lcd.print(leeDistancia(triggerPin,echoPin)*0.017);
lcd.print(" cm");
lcd.print(" ");
t2 += 1000;
}
}