Menu
CoddyTech

Stoppuhr mit Taster

Teil des Abschnitts Timing ohne Delay der Arduino-Journey von Coddy. Lektion 18 von 18.

Eine Stoppuhr hat zwei Zustände: laufend und angehalten. Ein Tastendruck versetzt sie vom einen in den anderen Zustand. Sie misst die Zeit auf sichere Weise: Speichere zu Beginn millis() und ziehe den Wert am Ende ab.

if (!running) {
  running = true;
  startTime = millis();
} else {
  running = false;
  Serial.println(millis() - startTime);
}

Die Taste wird entprellt wie zuvor die Modustaste: Reagiere, wenn sich der Messwert ändert, und warte dann 20 ms. Bei beiden Tastendrücken wird dieselbe Zeit von 20 ms gewartet, sodass die Zeit dazwischen stimmt.

Die LED zeigt den Zustand an: Sie leuchtet, während die Stoppuhr läuft.

challenge icon

Aufgabe

Mittel

Die Taste wird bereits eingelesen und entprellt, und onPress() wird bei jedem Drücken einmal ausgeführt. Schreibe onPress():

  • wenn die Stoppuhr nicht läuft: starte sie, speichere millis() in startTime und schalte die LED ein
  • wenn sie läuft: stoppe sie, schalte die LED aus und gib die Zeit in Millisekunden aus

Drücke Ausführen, drücke die Taste zweimal und klicke dann auf Überprüfen.

Probier es selbst

const int ledPin = 13;
const int buttonPin = 2;

bool wasPressed = false;
bool running = false;
unsigned long startTime = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
  Serial.begin(9600);
}

// Wird bei jedem Tastendruck einmal aufgerufen.
void onPress() {
  // läuft nicht: starten, Zeit merken, LED einschalten
  // läuft: stoppen, LED ausschalten, Zeit in ms ausgeben
}

void loop() {
  bool pressed = digitalRead(buttonPin) == LOW;
  if (pressed != wasPressed) {
    if (pressed) {
      onPress();
    }
    wasPressed = pressed;
    delay(20);   // Kontakte entprellen lassen
  }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Timing ohne Delay

Übe selbstständig: Arduino-Playground