/* How to use the DHT-22 sensor with Arduino uno
Temperature and humidity sensor
More info: http://www.ardumotive.com/how-to-use-dht-22-sensor-en.html
Dev: Michalis Vasilakis // Date: 1/7/2015 // www.ardumotive.com */
//Libraries
#include <DHT.h>;
#include <CircularBuffer.h>
CircularBuffer<int, 10> buffer;
unsigned long time = 0;
//Constants
#define DHTPIN 3 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino
//Variables
int chk;
float hum; //Stores humidity value
float temp; //Stores temperature value
void setup()
{
Serial.begin(9600);
dht.begin();
}
void loop()
{
/*Read data and store it to variables hum and temp
hum = dht.readHumidity();
temp= dht.readTemperature();
//Print temp and humidity values to serial monitor
Serial.print("Humidity: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.println(" Celsius");
*/
//delay(2000); //Delay 2 sec.
temp= dht.readTemperature();
buffer.push(temp);
if (millis() - time >= 2000) {
time = millis();
float avg = 0.0;
// the following ensures using the right type for the index variable
using index_t = decltype(buffer)::index_t;
for (index_t i = 0; i < buffer.size(); i++) {
Serial.println(buffer.last());
avg += buffer[i] / buffer.size();
}
Serial.println(buffer.last());
//Serial.print("Average is ");
//Serial.println(avg);
}
}