#include <DHT.h>
#define DATA_PIN 13
#define READINGS_COUNT 10
DHT sensor(DATA_PIN, DHT22);
float temperatureReadings[READINGS_COUNT];
int readingsIndex = 0;
void setup() {
Serial.begin(115200);
}
void readAndDisplayData() {
sensor.read();
float temp = sensor.readTemperature();
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println("°C");
// Store temperature reading in the array
temperatureReadings[readingsIndex] = temp;
readingsIndex = (readingsIndex + 1) % READINGS_COUNT;
}
void calculateAndDisplayStatistics() {
float minTemp = temperatureReadings[0];
float maxTemp = temperatureReadings[0];
float sumTemp = temperatureReadings[0];
for (int i = 1; i < READINGS_COUNT; i++) {
float temp = temperatureReadings[i];
sumTemp += temp;
if (temp < minTemp) {
minTemp = temp;
}
if (temp > maxTemp) {
maxTemp = temp;
}
}
float averageTemp = sumTemp / READINGS_COUNT;
// Calculate standard deviation
float sumSquaredDifferences = 0;
for (int i = 0; i < READINGS_COUNT; i++) {
float difference = temperatureReadings[i] - averageTemp;
sumSquaredDifferences += difference * difference;
}
float standardDeviation = sqrt(sumSquaredDifferences / READINGS_COUNT);
Serial.print("Min Temperature: ");
Serial.print(minTemp);
Serial.print("°C, Max Temperature: ");
Serial.print(maxTemp);
Serial.print("°C, Average Temperature: ");
Serial.print(averageTemp);
Serial.print("°C, Standard Deviation: ");
Serial.println(standardDeviation);
}
void loop() {
// Read and display temperature every second
readAndDisplayData();
delay(1000);
// Calculate and display statistics every 10 seconds
static unsigned long lastStatisticsTime = 0;
if (millis() - lastStatisticsTime >= 10000) {
calculateAndDisplayStatistics();
lastStatisticsTime = millis();
}
}