#include "DHT.h"
#define DHTPIN 4 // Pin de conexión del sensor DHT
#define DHTTYPE DHT22 // Tipo de sensor (cambiar entre DHT11 ó DHT22)
DHT dht(DHTPIN, DHTTYPE);
#define PIN_R 27 // Pin RGB Rojo
#define PIN_G 26 // Pin RGB Verde
#define PIN_B 25 // Pin RGB Azul
bool ANODO_COMUN = true; // true=Ánodo común false = Cátodo común
void setup() {
Serial.begin(9600);
Serial.println("Iniciando lectura del DHT22...");
dht.begin(); // Inicia el sensor DHT
pinMode(PIN_R, OUTPUT); //Salida de los RGB
pinMode(PIN_G, OUTPUT);
pinMode(PIN_B, OUTPUT);
setColor(0, 0, 0); //Apagar todos al inicio
}
void loop() {
delay(2000); // Espera entre lecturas
// Lectura de humedad y temperatura
float humedad = dht.readHumidity();
float temperatura = dht.readTemperature(); // Celsius
float temperaturaF = dht.readTemperature(true); // Fahrenheit
// Validar si hubo error
if (isnan(humedad) || isnan(temperatura)) {
Serial.println("Error al leer el DHT22");
return;
}
Serial.print("Humedad: ");
Serial.print(humedad);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.print(" °C | ");
Serial.print(temperaturaF);
Serial.print(" °F");
// Control del LED RGB según temperatura
if (temperatura <= 25) {
setColor(0, 255, 0); // Verde, los valores van de 0 a 255
Serial.println(" - Verde ");
} else if (temperatura > 25 && temperatura <= 40) {
setColor(0, 0, 255); // Azul
Serial.println(" - Azul ");
} else {
setColor(255, 0, 0); // Rojo
Serial.println(" - Rojo ");
}
}
// Función para encender color en RGB
void setColor(int r, int g, int b) {
if (ANODO_COMUN) { // Invertir valores para LED Ánodo común
analogWrite(PIN_R, 255 - r);
analogWrite(PIN_G, 255 - g);
analogWrite(PIN_B, 255 - b);
} else { // Normal para LED Cátodo común
analogWrite(PIN_R, r);
analogWrite(PIN_G, g);
analogWrite(PIN_B, b);
}
}
330 Ohms
Ánodo común