/* -----------------------------------------------------------------
------------------------- Codigo MultiHardWare ---------------------
----------------------------------------------------------------- */
#if defined(ESP8266)           //Condicional si se conecta una placa ESP8266
#include <ESP8266WiFi.h>       //Se agrega las librerias de la placa ESP8266
#include <ESP8266WiFiMulti.h>  //Se agrega las librerias de la placa ESP8266 para el Wifi
ESP8266WiFiMulti wifiMulti;
#pragma message "Codigo para ESP8266!"  //Si se detecta que es la placa ESP8266 que muestre ese mensaje

#elif defined(ESP32)           //Condicional si se conecta una placa ESP32
#include <WiFi.h>              //Se agrega las librerias de la placa ESP32
#include <WiFiMulti.h>         //Se agrega las librerias de la placa ESP22 para el Wifi
WiFiMulti wifiMulti;
#pragma message "Codigo para ESP32!"    //Si se detecta que es la placa ESP32 que muestre ese mensaje

#elif defined(ARDUINO)        //Condicional si se conecta una placa de arduino 
#pragma message "Codigo para Arduino basado AVR (UNO, MEGA, etc)!" //Que muestre que placa se conecto

#else                         //Si no se conecto ninguno de los anteriores 
#pragma message "No es ni ESP32 o ES8266 o AVR, que es?" //Enseña este mensaje

#endif   //Fin del condicional


/* -----------------------------------------------------------------
-------------------------- Librerias y Objetos ---------------------
----------------------------------------------------------------- */
template<class T> inline Print &operator <<(Print &obj, T arg) {
  obj.print(arg);
  return obj;

  //Estas dos lineas es para escribir un mensaje en una sola linea de programacion con varios valores o letras
}

//Se incluye la libreria del sensor DHT la cual se puede utilizar con la placa ESP
#include "DHTesp.h"
DHTesp dhtSensor;

/* -----------------------------------------------------------------
---------------- Declaracion de Variables y constantes -------------
----------------------------------------------------------------- */
//Se define el pin 15 como la entrada del DHT22
const int DHT_PIN = 15;

/* -----------------------------------------------------------------
------------------------- Configuracion Arduino --------------------
----------------------------------------------------------------- */
void setup() {
//Se abre la comunicacion serial 
  Serial.begin(9600);
  dhtSensor.setup(DHT_PIN, DHTesp::DHT22);

}


/* -----------------------------------------------------------------
---------------------------- Codigo Principal ----------------------
----------------------------------------------------------------- */
void loop() {

//Se llama la funcion con la cual el sensor funciona y se imprime en el monitor seria la temperatura y la humedad cada 2 segundos
  TempAndHumidity data = dhtSensor.getTempAndHumidity();
  Serial.println("Temp: " + String(data.temperature, 2) + "°C");
  Serial.println("Humidity: " + String(data.humidity, 1) + "%");
  Serial.println("---");
  delay(2000);

}


/* -----------------------------------------------------------------
-------------------------------- Funciones -------------------------
----------------------------------------------------------------- */
$abcdeabcde151015202530354045505560fghijfghij
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
dht1:VCC
dht1:SDA
dht1:NC
dht1:GND