/********************************************************************* Juergen Walter 04.07.2017 What? Timekeeping for one round Realease for start Button: GPIO0 - Boot - parallel drive-over switch Was? Zeitmessung fuer eine Runde mit: Freigabe fuer Start Taster: GPIO0 Boot - parallel zum Überfahrschalter *********************************************************************/ #include // I2C #include // OLED #include // Graphic #define OLED_RESET 4 // not used nicht genutzt bei diesem Display #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 //Adafruit_SSD1306 display(OLED_RESET); Treiber vor Version1.2 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); *********************************************************************/ void setup() { // initialize with the I2C addr 0x3C // mit I2C-Adresse 0x3c initialisieren display.begin(SSD1306_SWITCHCAPVCC, 0x3C); Serial.begin(115200); display.display(); delay(2000); display.clearDisplay(); display.setTextSize(2 ); display.setTextColor(INVERSE); } unsigned MessungNr=0; void loop() { unsigned long Zeit=0; unsigned long Start=0; unsigned long Ende=0; float s=0; /************************************************************************************* READY FREIGABE **************************************************************************************/ Serial.println(); Serial.println("Startfreigabe "); // M-Nr: ### send to display // Messung Nr. und Freigabe auf Display senden display.clearDisplay(); display.setCursor(0,0); display.print("M-Nr: "); MessungNr++; display.print(MessungNr); display.setCursor(0,32); display.print("Freigabe"); display.display(); /************************************************************************************* Wait for START Warten auf Messung START **************************************************************************************/ while (digitalRead(0) == HIGH) { yield(); //warten fuer ESP8266 } Start = millis(); Serial.print("gestartet Messung Nr.: "); Serial.print(MessungNr); // started send to display // gestartet auf Display senden display.clearDisplay(); display.setCursor(0,0); display.print("M-Nr: "); display.print(MessungNr); display.setCursor(0,32); display.print("gestartet"); display.display(); // wait for second wheel // Draisine hat zwei Raeder delay(2000); /************************************************************************************* // Waiting for FINISH // Warten auf ZIEL **************************************************************************************/ while (digitalRead(0) == HIGH) { Ende = millis(); Zeit = (Ende - Start); s=Zeit; s=s/1000; // Result send to display // Zeit auf Display senden display.clearDisplay(); display.setCursor(0,0); display.print("E-Nr: "); display.print(MessungNr); display.setCursor(0,32); display.print(s,2); display.print("s"); display.display(); } //ERGEBNIS Serial.print(" Ergebnis "); Serial.print(s,3); Serial.println("s"); display.clearDisplay(); display.setCursor(0,0); display.print("E-Nr: "); display.print(MessungNr); display.setCursor(0,32); display.print(s,3); display.print("s"); display.display(); /************************************************************************************* // Display RESULT for two seconds --> Button // Ergebnisanzeige fuer mindestens 2s bis Taster betaetigt werden kann *************************************************************************************/ delay(2000); // RESULTS accepted // Datenuebernahme mit Taster bestaetigen while(digitalRead(0) ==HIGH) { yield(); //warten } // send WAIT to display // Warten an Display senden display.clearDisplay(); display.setCursor(0,0); display.print("WARTEN"); display.display(); delay(2000); }