//declaracion de librerias
#include "DHTesp.h"
#include "WiFi.h"
//declaracion de variables
int DISTANCIA = 0;
int pinLed=2;
int pinLed2=4;
int pinEco=12;
int pinGatillo=13;
int pinDHT = 15;
//declaracion de constantes
const char* ssid = "SSID";
const char* pass = "PASSWORD";
//inicializacion del ultrasonido
long readUltrasonicDistance(int triggerPin, int echoPin)
{
//Iniciamos el pin del emisor de ruido en salida
pinMode(triggerPin, OUTPUT);
//Apagamos el emisor de sonido
digitalWrite(triggerPin, LOW);
//Retrasamos la emision de sonido por 2 milesismas de segundo
delayMicroseconds(2);
// Comenzamos a emitir sonido
digitalWrite(triggerPin, HIGH);
//Retrasamos la emision de sonido por 2 milesismas de segundo
delayMicroseconds(10);
//Apagamos el emisor de sonido
digitalWrite(triggerPin, LOW);
//Comenzamos a escuchar el sonido
pinMode(echoPin, INPUT);
// Calculamos el tiempo que tardo en regresar el sonido
return pulseIn(echoPin, HIGH);
}
//inicializacion del DHT11/22
DHTesp dht;
void setup() {
Serial.begin(115200);
//Configuramos el pin del led como salida
pinMode(pinLed, OUTPUT);
pinMode(pinLed2, OUTPUT);
dht.setup(pinDHT, DHTesp::DHT22);
WiFi.begin(ssid, pass);
delay(2000);
/*En el terminal Serial, indicamos que se está realizando la conexión*/
Serial.print("Se está conectando a la red WiFi denominada ");
Serial.println(ssid);
/*Mientras se realiza la conexión a la red, aparecerán puntos, hasta que se realice la conexión*/
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
/*Con la conexión ya realizada, se pasa a imprimir algunos datos importantes, como la dirección IP asignada a nuestro dispositivo*/
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
//Calculamos la distancia en cm
DISTANCIA = 0.01723 * readUltrasonicDistance(pinGatillo, pinEco);
TempAndHumidity data = dht.getTempAndHumidity();
//Mostramos la disstancia
Serial.println(DISTANCIA);
//Si la distancia es mayor a 10cm y la temperatura menor o igual a 37 encendemos el led verde
if (DISTANCIA > 10) {
if(data.temperature > 37)
{
digitalWrite(pinLed, HIGH);
digitalWrite(pinLed2, LOW);
}
//Si la distancia es mayor a 10cm y la temperatura mayor a 37 encendemos el led rojo
else {
digitalWrite(pinLed2, HIGH);
digitalWrite(pinLed, LOW);
}
}
else
//Si la distancia y la temperatura no cumplen las condiciones, apagamos los led
{
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed, LOW);
}
delay(1);
}