//Incluimos las librerias
#include <Adafruit_NeoPixel.h>
#include <DHT.h>
/***** TIRA LEDS *****/
#define PIN_NEO_PIXEL 15 // El pin GPIO15 del ESP32 conectado al NeoPixel
#define NUM_PIXELS 16 // El número de LEDs (píxeles) en la tira de LEDs NeoPixel
//Creamos la tira LED
Adafruit_NeoPixel NeoPixel(NUM_PIXELS, PIN_NEO_PIXEL, NEO_GRB + NEO_KHZ800);
/***** SENSOR DHT *****/
#define PIN_DHT 2 // El pin GPIO2 del ESP32 conectado al DHT
// Descomenta el tipo de sensor que uses
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
//Creamos el sensor
DHT sensor_dht(PIN_DHT, DHTTYPE);
// Definición de colores básicos (formato GRB)
uint32_t rojo = Adafruit_NeoPixel::Color(255, 0, 0);
uint32_t verde = Adafruit_NeoPixel::Color(0, 255, 0);
uint32_t azul = Adafruit_NeoPixel::Color(0, 0, 255);
uint32_t amarillo = Adafruit_NeoPixel::Color(255, 255, 0);
uint32_t magenta = Adafruit_NeoPixel::Color(255, 0, 255);
uint32_t cyan = Adafruit_NeoPixel::Color(0, 255, 255);
uint32_t blanco = Adafruit_NeoPixel::Color(255, 255, 255);
uint32_t apagado = Adafruit_NeoPixel::Color(0, 0, 0); // Equivalente a .clear()
int red, green, blue;
void setup() {
Serial.begin(9600);
sensor_dht.begin();
NeoPixel.begin(); // inicializar el objeto de la tira NeoPixel (REQUERIDO)
}
void loop() {
// establece todos los colores de píxeles a 'apagado'. Solo tiene efecto si se llama a pixels.show()
NeoPixel.clear();
float temperatura = sensor_dht.readTemperature(); // Leer temperatura en Celsius
Serial.print("La temperatura es: "); Serial.print(temperatura); Serial.println("°C");
float humedad = sensor_dht.readHumidity(); // Leer humedad
Serial.print("La humedad es: "); Serial.print(humedad); Serial.println("%");
// Asegurar que la temperatura esté en el rango 0-45°C
temperatura = constrain(temperatura, 0, 45);
// Calcular el color (azul → verde → rojo)
if (temperatura <= 20) {
// Frío (0-20°C): Azul → Verde (disminuir azul, aumentar verde)
red = 0;
green = map(temperatura, 0, 20, 0, 255);
blue = map(temperatura, 0, 20, 255, 0);
} else {
// Caliente (20-45°C): Verde → Rojo (disminuir verde, aumentar rojo)
red = map(temperatura, 20, 45, 0, 255);
green = map(temperatura, 20, 45, 255, 0);
blue = 0;
}
// Encender todos los LEDs con el mismo color
for(int i = 0; i < NUM_PIXELS; i++) {
NeoPixel.setPixelColor(i, NeoPixel.Color(red, green, blue));
}
NeoPixel.show();
delay(1000); // 1 segundo de tiempo apagado
}