const int THERMISTORPIN = 32; // Number of samples to take and average const int NUMSAMPLES = 150; // Number of measurements = 300 seconds (10 min) // Variables for overall statistics unsigned long totalMeasurements = 0; float overallSum = 0.0; float highestTemp = -999.0; float lowestTemp = 999.0; // Array to store averaged measurements (circular buffer) const int MAX_AVERAGES = 18; // 18 measurements over 3 hours (10 min interval) float averagedMeasurements[MAX_AVERAGES]; int currentAverageIndex = 0; // Calculate temperature float calculateTemperature(float sample) { float voltage = sample * (5000.0 / 1024.0); float temperatureC = (voltage - 500) / 10.0; temperatureC = temperatureC-772 ; return temperatureC; } void setup() { Serial.begin(115200); delay(1000); Serial.println("Program start"); } void loop() { static unsigned long previousTime = 0; static unsigned long tenpreviousTime = 0; const unsigned long interval = 1000; // Display live data once per second const unsigned long teninterval = 600000; // Ten minute intervals unsigned long currentTime = millis(); // Get current time if (currentTime - previousTime >= interval) { previousTime = currentTime; float liveData = analogRead(THERMISTORPIN); float liveTemperature = calculateTemperature(liveData); Serial.print("Live Temperature: "); Serial.print(liveTemperature); Serial.println(" °C"); totalMeasurements++; overallSum += liveTemperature; if (liveTemperature > highestTemp) { highestTemp = liveTemperature; } if (liveTemperature < lowestTemp) { lowestTemp = liveTemperature; } } if (currentTime - tenpreviousTime >= teninterval) { tenpreviousTime = currentTime; float average = 0.0; for (int i = 0; i < NUMSAMPLES; i++) { float sample = analogRead(THERMISTORPIN); float temperature = calculateTemperature(sample); average += temperature; } average /= NUMSAMPLES; averagedMeasurements[currentAverageIndex] = average; currentAverageIndex = (currentAverageIndex + 1) % MAX_AVERAGES; } if (Serial.available() > 0) { char message = Serial.read(); if (message == 'a') { Serial.print("Highest Temperature: "); Serial.print(highestTemp); Serial.println(" °C"); // Print lowest temperature Serial.print("Lowest Temperature: "); Serial.print(lowestTemp); Serial.println(" °C"); // Print overall average temperature float overallAverage = overallSum / totalMeasurements; Serial.print("Overall Average Temperature: "); Serial.print(overallAverage); Serial.println(" °C"); // Print averaged measurements Serial.println("Averaged Measurements:"); for (int i = 0; i < MAX_AVERAGES; i++) { Serial.print("Measurement "); Serial.print(i + 1); Serial.print(": "); Serial.print(averagedMeasurements[i]); Serial.println(" °C"); } } } }