#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
#define GREEN_LED 5
#define YELLOW_LED 6
#define RED_LED 7
#define BUZZER 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float currentTemp;
float previousTemp = -100;
float maxTemp = -100;
void setup() {
Serial.begin(9600);
sensors.begin();
pinMode(GREEN_LED, OUTPUT);
pinMode(YELLOW_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(BUZZER, OUTPUT);
Serial.println("=================================");
Serial.println(" SMART TEMPERATURE MONITOR PRO");
Serial.println("=================================");
}
void loop() {
sensors.requestTemperatures();
currentTemp = sensors.getTempCByIndex(0);
if (currentTemp == DEVICE_DISCONNECTED_C) {
Serial.println("Sensor Error!");
delay(1000);
return;
}
if (currentTemp > maxTemp)
maxTemp = currentTemp;
Serial.print("Current Temperature : ");
Serial.print(currentTemp);
Serial.println(" C");
Serial.print("Maximum Temperature : ");
Serial.print(maxTemp);
Serial.println(" C");
if (previousTemp != -100) {
if (currentTemp > previousTemp)
Serial.println("Trend : Rising");
else if (currentTemp < previousTemp)
Serial.println("Trend : Falling");
else
Serial.println("Trend : Stable");
}
if (currentTemp < 25) {
Serial.println("Status : SAFE");
digitalWrite(GREEN_LED, HIGH);
digitalWrite(YELLOW_LED, LOW);
digitalWrite(RED_LED, LOW);
noTone(BUZZER);
}
else if (currentTemp < 35) {
Serial.println("Status : WARNING");
digitalWrite(GREEN_LED, LOW);
digitalWrite(YELLOW_LED, HIGH);
digitalWrite(RED_LED, LOW);
noTone(BUZZER);
}
else {
Serial.println("Status : DANGER");
digitalWrite(GREEN_LED, LOW);
digitalWrite(YELLOW_LED, LOW);
digitalWrite(RED_LED, HIGH);
tone(BUZZER,1000);
}
previousTemp = currentTemp;
Serial.println("----------------------------");
delay(1000);
}