// https://forum.arduino.cc/t/help-with-aditional-code/1264085
// date 24/05/2024
//Home_temp_leds_DHT22_v2_IDE
// conventional delay
//This version uses a DHT22 Sensor
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <Servo.h>
//#include <OneWire.h>
//#include <DallasTemperature.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT_Unified dht(DHTPIN, DHTTYPE);
// =========================================
int SENSOR_PIN = 2;
int SERVO_PIN = 9;
int sensorValue; // variable to store temp. sensor value
int previousTemperature; // last temperature shown prior to current temparature reading
int currentTemperature = 0;
const int ledH = (10); // warmng red led and wire
const int ledL = (11); // cooling orange wire
const int ledN = (12); //steady green led and wire
//const float TEMPERATURE_THRESHOLD = 26;
Servo servo;
//OneWire oneWire(SENSOR_PIN);
//DallasTemperature sensor(&oneWire);
float temperature;
//float Temperature;
float servopos;
//unsigned long delayTime = 2UL * 60UL * 1000UL; //set delay time = 2 min
unsigned long delayTime = 1000UL; //For debug
unsigned long readTime = 0;
// ==========================================================================
void setup() {
Serial.begin(9600);
pinMode(ledH, OUTPUT);
pinMode(ledL, OUTPUT);
pinMode(ledN, OUTPUT);
servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object
servo.write(0);
currentTemperature = (SENSOR_PIN); //(temperature); //(SENSOR_PIN);
//sensor.begin();
dht.begin();
Serial.println(F("DHTxx Unified Sensor Example"));
sensor_t sensor;
dht.temperature().getSensor(&sensor);
}
//==============================================================================
void loop() {
if (millis() - readTime > delayTime )
{
readTime = millis();
// delay(1000);
// delay(2 * 60 * 1000UL); //set delay time = 2 min
sensors_event_t event;
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
Serial.println(F("Error reading temperature!"));
} else {
Serial.print(F("Temperature: "));
Serial.print(event.temperature);
Serial.println(F("°C"));
}
previousTemperature = currentTemperature;
currentTemperature = (event.temperature); //(DHT22 SENSOR_PIN);
if (currentTemperature > previousTemperature) // warming
{
Serial.println(F(" Warming"));
digitalWrite(ledH, HIGH);
digitalWrite(ledL, LOW);
digitalWrite(ledN, LOW);
delay(50);
} else if (currentTemperature < previousTemperature) // cooling
{
Serial.println(F("Cooling"));
digitalWrite(ledL, HIGH);
digitalWrite(ledH, LOW);
digitalWrite(ledN, LOW);
delay(50);
} else if (currentTemperature == previousTemperature) // steady
{
Serial.println(F(" Steady"));
digitalWrite(ledN, HIGH);
digitalWrite(ledH, LOW);
digitalWrite(ledL, LOW);
}
{ servopos = map(currentTemperature, 10, 26, 180, 0); // set temperature range and servo angles
if (servopos < 0) servopos = 0;
if (servopos > 180) servopos = 180;
servo.write(servopos); // write servo position indcating temperature
//delay(50);
}
//delay(1000UL); //set delay time = 2 min
}
}