# include int TASTER = 7; // Name des Tasters OneButton NameTaster(TASTER, true); // Variablen der Zeit float StartZeit; float VerstricheneZeit; float Sekunden; int AnzahlRunden = 1; // maximale Anzahl der Runden const int RundenMax = 5; // Array Rundenzeiten String RundenZeit[RundenMax]; // TasterStatus sorgt für Start/Neustart bool TasterStatus = true; bool Neustart = false; void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} // Aktionen dem Modus des Tasters zuordnen NameTaster.attachClick(einKlick); NameTaster.attachDoubleClick(DoppelKlick); NameTaster.attachLongPressStop(langerDruckStopp); /* Anzahl der Millisekunden festlegen Standardwerte gesetzt: PressTicks: 1000 ClickTicks: 600 DebounceTicks: 50 wenn die Standardwerte gesetzt werden sollen können die nächsten Zeilen auskommentiert werden */ NameTaster.setPressTicks(1000); NameTaster.setClickTicks(500); NameTaster.setDebounceTicks(50); Serial.println("\nTaste -> Start\n"); Serial.println("\nDoppelklick -> Zwischenergebnis\n"); Serial.println("\nLanger Klick -> Neustart\n"); Serial.println("----------------------------"); } void loop() { // Taster alle 10 Millisekunden abfragen NameTaster.tick(); delay(10); } void einKlick() { if (TasterStatus) { if (Neustart) { AnzahlRunden = 1; // String leeren for (int i = 1; i < RundenMax; i ++) { RundenZeit[i] = ""; } Neustart = false; } StartZeit = millis(); Serial.println("Runde: " + String(AnzahlRunden)); Serial.println("Taste -> Stopp"); } else { // Zeit berechnen float Sekunden; VerstricheneZeit = millis() - StartZeit; Sekunden = VerstricheneZeit / 1000; // Sekunden in String umwandeln // damit . durch , ersetzt werden kann String AnzahlSekunden = String(Sekunden); // . durch , ersetzen AnzahlSekunden.replace(".", ","); // Ausgabe im Seriellen Monitor Serial.println(AnzahlSekunden + " Sekunden"); Serial.println("----------------------------"); if (AnzahlRunden == RundenMax - 2) Serial.println("Taste -> letzte Runde"); else if (AnzahlRunden == RundenMax - 1) Serial.println("Ergebnis:"); else Serial.println("Taste -> nu00e4chste Runde"); if (AnzahlRunden == RundenMax - 1) { RundenZeit[AnzahlRunden] = AnzahlSekunden; Neustart = true; DoppelKlick(); } else { RundenZeit[AnzahlRunden] = AnzahlSekunden; AnzahlRunden ++; } } // Tasterstatus umkehren TasterStatus = !TasterStatus; } void DoppelKlick() { for (int i = 1; i <= RundenMax - 1; i ++) { if (RundenZeit[i] != "") Serial.println(String(i) + ": " + RundenZeit[i] + " Sekunden"); } } void langerDruckStopp() { AnzahlRunden = 1; TasterStatus = true; Serial.println("----------------------------"); Serial.println("Neustart: Runde 1"); }