#include <DHT.h>
// Definiciones de pines
const int trigPin = 5; // Pin GPIO5
const int echoPin = 18; // Pin GPIO18
const int dhtPin = 15; // Pin GPIO15
const int buzzerPin = 4; // Pin GPIO4
const int ledPin = 2; // Pin GPIO2
// Configuración del sensor DHT22
#define DHTTYPE DHT22
DHT dht(dhtPin, DHTTYPE);
// Variables para tiempo y distancia
long duration;
float distance;
void setup() {
// Configuración de los pines
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
// Inicialización del sensor DHT22 y la comunicación serial
dht.begin();
Serial.begin(115200);
}
void loop() {
// Medición de distancia
distance = medirDistancia();
Serial.print("Distancia: ");
Serial.print(distance);
Serial.println(" cm");
if (distance < 200) {
activarBuzzer(1000);
Serial.println("¡Estás muy cerca de golpearte!");
} else {
digitalWrite(buzzerPin, LOW);
Serial.println("Estás a una buena distancia");
}
Serial.println("_________________________________________________________________");
// Medición de temperatura
float temp = dht.readTemperature();
if (!isnan(temp)) {
Serial.print("Temperatura: ");
Serial.print(temp);
Serial.println(" °C");
if (temp > 40) {
digitalWrite(ledPin, HIGH); // Enciende el LED
Serial.println("Temperatura muy alta, ¡Peligro!");
} else {
digitalWrite(ledPin, LOW); // Apaga el LED
Serial.println("Temperatura en su nivel");
}
} else {
Serial.println("Error al leer la temperatura");
}
Serial.println("_________________________________________________________________");
// Pausa antes de la siguiente iteración
delay(10000); // 10 segundos
}
// Función para medir la distancia usando el sensor ultrasónico
float medirDistancia() {
// Enviar el pulso de disparo
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Leer la duración del eco
duration = pulseIn(echoPin, HIGH);
// Calcular la distancia en cm
float distancia = (duration * 0.0343) / 2;
return distancia;
}
// Función para activar el buzzer
void activarBuzzer(int duracion) {
digitalWrite(buzzerPin, HIGH);
delay(duracion);
digitalWrite(buzzerPin, LOW);
delay(duracion);
}