#include "DHT.h"
#define DHT22_PIN 25
#define PIR_SENSOR 13
#define LDR A0
#define LED_ROJO 16
#define LED_VERDE 18
#define LED_AMARILLO 19
#define BUZZER 15
DHT dht22(DHT22_PIN, DHT22);
int warm_up = 0;
void setup() {
pinMode(LED_ROJO, OUTPUT);
pinMode(LED_VERDE, OUTPUT);
pinMode(LED_AMARILLO, OUTPUT);
pinMode(PIR_SENSOR, INPUT);
pinMode(BUZZER, OUTPUT);
Serial.begin(115200);
dht22.begin();
Serial.println("Listo!");
}
void loop() {
int salida_sensor;
salida_sensor = digitalRead(PIR_SENSOR); // Changed from == to =
float humi = dht22.readHumidity();
float tempC = dht22.readTemperature();
float tempF = dht22.readTemperature(true);
int raw = analogRead(LDR);
// Mapea el valor del LDR a la escala de lux (asumiendo que 4063 es el valor máximo y 32 es el valor mínimo)
float lux = map(raw, 32, 4063, 0, 10000); // Corregido el mapeo de lux
if (salida_sensor == LOW) {
if (warm_up == 1) {
Serial.println("Calentando");
warm_up = 0;
digitalWrite(BUZZER, LOW);
delay(2000);
}
Serial.println("Objeto no detectado");
delay(1000);
} else {
Serial.println("Objeto detectado");
warm_up = 1;
delay(1000);
if (isnan(humi) || isnan(tempC) || isnan(tempF)) {
Serial.println("Problema al leer sensor DHT22!");
} else {
Serial.print("lux: ");
Serial.println(lux);
Serial.println("DHT22# Humedad: ");
Serial.print(humi);
Serial.print("%");
Serial.print(" | ");
Serial.print("Temperatura: ");
Serial.print(tempC);
Serial.print("°C ~ ");
Serial.print(tempF);
Serial.print("°F");
if (15.0 < tempC && tempC < 20.0) {
digitalWrite(LED_VERDE, HIGH);
digitalWrite(LED_AMARILLO, LOW);
digitalWrite(LED_ROJO, LOW);
digitalWrite(BUZZER, LOW);
} else if (20.0 <= tempC && tempC < 28.0) {
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_AMARILLO, HIGH);
digitalWrite(LED_ROJO, LOW);
digitalWrite(BUZZER, LOW);
} else if (tempC >= 29.0) { // Corregido el operador en la condición
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_AMARILLO, LOW);
digitalWrite(LED_ROJO, HIGH);
digitalWrite(BUZZER, HIGH);
}
delay(250); // TIEMPO DE ESPERA ENTRE MUESTRAS
}
}
}