const int trigPin = 5; const int echoPin = 18; unsigned long shortTime = 0; //define sound speed in cm/uS #define SOUND_SPEED 0.034 #define CM_TO_INCH 0.393701 long duration; float distanceCm; float distanceInch; int var = 0; float totalCm = 0; float totalIn = 0; float averageCm = 0; float averageIn = 0; int avg[200]; int val = 0; int truTotal; int truTime; int truAverage; char message; int secsOpened; int truSecsOpen; void setup() { Serial.begin(115200); // Starts the serial communication Serial.println(); Serial.println(); pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input } void loop(){ if (Serial.available() > 0){ char message = Serial.read(); if(message == 's'){ for (;;){ if (millis() > (shortTime + 1000)){ duration = 0; distanceCm = 0; distanceInch = 0; // Clears the trigPin digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculate the distance distanceCm = duration * SOUND_SPEED/2; // Convert to inches distanceInch = distanceCm * CM_TO_INCH; // Prints the distance in the Serial Monitor Serial.println(); Serial.print("Distance (inch): "); Serial.println(distanceInch); totalIn = totalIn + distanceInch; truTotal = truTotal + distanceInch; Serial.println(); shortTime = millis(); var++; truTime++; if (distanceInch <= 60){ secsOpened = secsOpened + 1; truSecsOpen = truSecsOpen + 1; } if (var >= 600){ averageIn = totalIn / var; avg[val] = secsOpened; val++; var = 0; averageIn = 0; totalIn = 0; secsOpened = 0; } if (Serial.available() > 0){ message = Serial.read(); if(message == 'a'){ for (int i = 1; i <= val; i++) { Serial.println(); Serial.print("On interval "); Serial.print(i); Serial.print(" the was open for "); Serial.print(avg[i - 1]); Serial.println(" seconds"); } Serial.println(); Serial.print("The overall seconds open was "); truAverage = truTotal / truTime; Serial.print(truSecsOpen); Serial.println(); } } } } } } }