#include unsigned long shortTime; unsigned long longTime; int tempPin; // NOT USED ANYMORE int lightPin; float lightHigh = 0; // ARBIRARY NUMBER WHERE ANY RECORDING WILL BE LOWER float lightLow = 10000; // ARBIRARY NUMBER WHERE ANY RECORDING WILL BE LOWER //float TEMPDATA[6]; float LIGHTDATA[600]; // ARRAY THAT IS USED TO AVERAGE EVERY 10MIN float currentAvg; float rollingAvg; int ind = 0; int avgcount = 0; void setup() { // put your setup code here, to run once: Serial.begin(115200); //BAUD 115200 tempPin = analogRead(39); // PIN 39 } float convertRead2Degs(int val) { // NOT USED ANYMORE float readVolts; float degC; readVolts = 5*val/4096; degC = log(((50 / readVolts) - 10)/28)/(-0.041); return degC; } float convertRead2Lux(int val) { // FOUND USING VOLTAGE DIVIDER AND DATA SHEET LOG-LOG DERIVATION float readVolts; float lux; readVolts = 3.3*val/4096; lux = exp(19.25/2-(3.3/(2*readVolts))); return lux; } /*float takeTenMinTempAvg() { float runningTotal; for (int i = 0; i < 6; i++) { runningTotal = runningTotal + TEMPDATA[i]; } return runningTotal/6; }*/ float takeTenMinLightAvg() { float runningTotal; for (int i = 0; i < 600; i++) { runningTotal = runningTotal + LIGHTDATA[i]; } return runningTotal/600; } void findLightHigh(float val) { // FINDS HIGHEST LUX RECORDED if (val > lightHigh) { lightHigh = val; } } void findLightLow(float val) { // FINDS LOWEST LUX RECORDED if(val < lightLow) { lightLow = val; } } void findRollingAvg(float val) { // WILL AVG USING A ROLLING AVG EQN (CURRENT TOTAL AVG*QUANTITY + NEW ENTRY THEN DIVIDE BY NEW QUANTITY) rollingAvg = (rollingAvg*avgcount + val)/(avgcount+1); } void loop() { // put your main code here, to run repeatedly: if(millis() > (shortTime + 1000)) { // TAKE SENSOR DATA EVERY SECOND shortTime = millis(); lightPin = analogRead(34); //TEMPDATA[ind] = convertRead2Degs(tempPin); LIGHTDATA[ind] = convertRead2Lux(lightPin); ind++; } if(millis() > (longTime + (600*1000))) { // DISPLAY AVG IN EXCEL EVERY 10 MIN longTime = millis(); currentAvg = takeTenMinLightAvg(); findLightHigh(currentAvg); findLightLow(currentAvg); findRollingAvg(currentAvg); Serial.print(currentAvg); Serial.print(","); Serial.print(lightHigh); Serial.print(","); Serial.print(lightLow); Serial.print(","); Serial.print(rollingAvg); Serial.println(" "); avgcount++; ind = 0; } //Serial.println(convertRead2Degs(tempPin)); }