//declare pins int inputPin = 39; String input; //input voltage float mVIn=0; float currentTemp; float averageTemp; float maxTemp = 0; float minTemp = 100000; float resistance; unsigned long i = 0; unsigned long x = 0; int minuteIndex = 0; float lastTenMins[600]; float lastTenAvg; //calculating resistance float mVToRes(float mV) { float volts = mV / 1000; float res = ((10000*volts)/(5-volts)); return res; } //convert resistance to temperature float resToTemp(float res) { float ratio = res / 10000; int temp; //ratio for accurate temp if (0 < ratio < 0.055) { temp = 100; } else if (0.0553.2) { temp = 0; } //conversion to fahrenheit float f = ((temp * (2.5)) + 42); return f; } float tempToAvg(unsigned long j, unsigned long z, float temp, float avg) { unsigned long sum = avg * ((z*600) + j); float newAvg = ((sum + temp)/((z*600)+j+1)); return newAvg; } void printSummary(float Max, float Min, float Avg, float current, float lastTenAverage, int seconds) { Serial.print("\n\n\n"); Serial.println("SUMMARY"); Serial.print("Max temp: (degrees F) "); Serial.println(Max); Serial.print("Min temp: (degrees F) "); Serial.println(Min); Serial.print("Total Average temp: (degrees F) "); Serial.println(Avg); Serial.print("Last Ten Minutes Average temp: (degrees F) "); Serial.println(lastTenAverage); Serial.print("Current temp: (degrees F) "); Serial.println(current); Serial.print("Seconds since start: "); Serial.print(seconds); Serial.print("\n\n\n"); } void setup() { Serial.begin(115200); pinMode(inputPin, INPUT); // pinMode(signalInPin, INPUT); // pinMode(powerOutPin, OUTPUT); // digitalWrite(powerOutPin, HIGH); for (int x = 0; x<600; x++) { lastTenMins[x] = 0; } } void loop() { //read the input pin mVIn = analogRead(inputPin); //calculate the resistance resistance = mVToRes(mVIn); //calculate the current temperature currentTemp = resToTemp(resistance); //Serial.println(currentTemp); minuteIndex = i; lastTenMins[minuteIndex] = currentTemp; //Serial.println(minuteIndex); //Calculate max and min temperature if (currentTemp > maxTemp) { maxTemp = currentTemp; } if (currentTemp < minTemp) { minTemp = currentTemp; } //Calculate new running average averageTemp = tempToAvg(i, x, currentTemp, averageTemp); //Calculate last 10 mins average unsigned long sumTenMins = 0; for (int x = 0; x<600; x++) { sumTenMins = sumTenMins + lastTenMins[x]; } lastTenAvg = (sumTenMins/600); //convert to seconds unsigned long mill = millis(); unsigned long seconds = mill / 1000; //print data if (Serial.available()) { input = Serial.readStringUntil('\n'); input.trim(); if (input.equals("Summary") || input.equals("summary")){ printSummary(maxTemp, minTemp, averageTemp, currentTemp, lastTenAvg, seconds); }} else { Serial.print("Current Temp: (degrees F) "); Serial.println(currentTemp); } //reset for 10 minute summary if (i == 599) { i = 0; x = x+1; } else { i = i + 1; } delay(1000); }