void loop() { // int v = digitalRead(8); // Serial.print(v); // Serial.print('\n'); if (timerRunning == 0 && digitalRead(SENSOR) == HIGH) { // stop counting startTime = millis(); timerRunning = 1; } if (timerRunning == 1 && digitalRead(SENSOR) == LOW) { // start counting endTime = millis(); timerRunning = 0; laps++; avglaps++; duration = endTime - startTime; seconds = (duration/1000); hours= (duration/3600000); mph= (distance/hours); Serial.print ("Lap: "); Serial.print (laps); Serial.print (" \t"); Serial.print ("mph: "); Serial.print (mph,3); Serial.print (" \t"); Serial.print ("sec: "); Serial.println (seconds,3); Serial.print ("avgLap: "); Serial.println (avglaps); delay(5); // added this delay to stop reading rear wheels error before was up to .003 seconds if (mode == MODE_SPINUP) { showNumber(mph); showShapeLAP(2); } if (mode == MODE_COUNTING) { showNumber(mph); showNumberLAP(recordedLaps); recordLap(mph); if (recordedLaps == maxLaps) { Serial.println('Switching mode to MODE_RESTING\n'); mode = MODE_RESTING; } } if (mode == MODE_RESTING) { showNumber(averageSpeed()); showNumberLAP(maxLaps); delay(3000); showNumber(0); showShapeLAP(2); Serial.println("Setting mode to MODE_SPINUP\n"); mode = MODE_SPINUP; recordedLaps = 0; } // Otherwise leave it /// LAP AVERAGE COUNTER LOOP CODE ///////////////////// Serial.print("avgSpeed: "); Serial.println (averageSpeed(),4); } }