#include <DHT.h>
#include <SevSeg.h>
#define DHTPIN 4 // Digital pin connected to the DHT sensor
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
#define LED_PIN 2 // Digital pin connected to the LED
#define BUZZER_PIN 5 // Digital pin connected to the buzzer
#define TEMP_THRESHOLD 25 // Temperature threshold
// Pins for the seven-segment display
#define SEGMENT_A 10
#define SEGMENT_B 11
#define SEGMENT_C 12
#define SEGMENT_D 13
#define SEGMENT_E 14
#define SEGMENT_F 15
#define SEGMENT_G 16
#define SEGMENT_DP 17
SevSeg sevseg;
void setup()
{
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
Serial.begin(9600);
dht.begin();
byte numDigits = 4;
byte digitPins[] = {6, 7, 8, 9}; // Pins for controlling digits
byte segmentPins[] = {SEGMENT_A, SEGMENT_B, SEGMENT_C, SEGMENT_D, SEGMENT_E, SEGMENT_F, SEGMENT_G, SEGMENT_DP}; // Pins for controlling segments
sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins);
}
void loop()
{
// Reading temperature takes about 250 milliseconds!
float temperature = dht.readTemperature();
if (isnan(temperature))
{
Serial.println("Failed to read from DHT sensor !!");
return;
}
if (temperature > TEMP_THRESHOLD)
{
triggerAlarm(LED_PIN, BUZZER_PIN); // Trigger LED and buzzer alarm
Serial.print("Temperature exceeded : ");
Serial.println(temperature);
displayTemperature(temperature);
}
delay(1000); // Delay before next reading
}
void triggerAlarm(int pin, int otherPin)
{
// Trigger the alarm for consecutive 3 times
tone(5 , 1500 , 1500) ;
for (int i = 0; i < 3; i++)
{
digitalWrite(pin, HIGH); // Turn on buzzer or LED
digitalWrite(otherPin, HIGH); // Turn on LED or buzzer
delay(500); // Alarm duration
digitalWrite(pin, LOW); // Turn off buzzer or LED
digitalWrite(otherPin, LOW); // Turn off LED or buzzer
delay(500); // Delay before next alarm
}
}
void displayTemperature(float temp)
{
int temp_int = (int)temp;
sevseg.setNumber(temp_int);
sevseg.refreshDisplay();
}
Loading
esp32-s2-devkitm-1
esp32-s2-devkitm-1