#include <DHT.h>
#define DHTPIN 14 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define ntemp 10
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor
float temperature_c[ntemp]; // Stores Celcius temperature value
static int measurement_counter = 0;
float getMin()
{
float result = temperature_c[0];
for (int i = 1; i < ntemp; i++)
{
if (temperature_c[i] < result)
{
result = temperature_c[i];
}
}
return result;
}
float getMax()
{
float result = temperature_c[0];
for (int i = 1; i < ntemp; i++)
{
if (temperature_c[i] > result)
{
result = temperature_c[i];
}
}
return result;
}
float getAvg()
{
float result = 0.0;
for (int i = 0; i < ntemp; i++)
{
result = result + temperature_c[i];
}
return (result / ntemp);
}
float getStdv()
{
float avg = getAvg();
float deviation = 0.0;
float sumsqr = 0.0;
for (int i = 0; i < ntemp; i++)
{
deviation = temperature_c[i] - avg;
sumsqr = sumsqr + sq(deviation);
}
float variance = sumsqr / ntemp;
return sqrt(variance);
}
void initialisation()
{
for (int i = 0; i < ntemp; i++)
{
temperature_c[i] = 0.0;
}
}
void addCounter()
{
measurement_counter = measurement_counter + 1;
if (measurement_counter >= ntemp)
{
printProcessedData();
resetCounter();
}
}
void resetCounter()
{
measurement_counter = 0;
}
void addReading(float t)
{
temperature_c[measurement_counter] = t;
addCounter();
}
void printProcessedData()
{
Serial.print("Min: ");
Serial.print(getMin());
Serial.print(", Max: ");
Serial.print(getMax());
Serial.print(", Avg: ");
Serial.print(getAvg());
Serial.print(", Stdev: ");
Serial.println(getStdv());
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
dht.begin();
}
void loop() {
// put your main code here, to run repeatedly:
//Print temp and humidity values to serial monitor
int i=0;
for (i=0;i<10;i++)
{
temperature_c[i]=dht.readTemperature(DHTTYPE); // Stores Celcius temperature value
Serial.println(" %, Temperature C: ");
Serial.print(temperature_c[i]);
Serial.print(" Celsius");
delay(10000);
}
printProcessedData();
}