/*
Aufgabe: Programmiere eine Stoppuhr
Zwei Push Buttons sind bereits mit einem Arduino und einem LCD Display zusammengeschalten.
Der grüne Button ist der Start / Reset Button der Stoppuhr, der rote der Stop Button.
Standardmäßig liegt ein hoher Spannungspegel (HIGH) an den Pins der Buttons am Arduino an.
Wird ein Button gedrückt, so wird der Stromkreis geöffnet, der Spannungspegel fällt ab (LOW).
Teste auf den Spannungspegel, um die Stoppuhr zu programmieren.
*/
// 1. Lade die Bibliothek LiquidCrystal_I2C, um sie verwenden zu können
#include <LiquidCrystal_I2C.h>
// 2. Erstelle ein LiquidCrystal_I2C Objekt und weise ihm einen Namen zu
// Gebe die Informationen zum Display als Attribute an (Hexadezimal Adresse 0x27, Anzahl Zeichen pro Zeile, Anzahl Zeilen)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// 3. Initialisierung der Variablen
// 3.1 für die Zeit, zu der die Stoppuhr beginnt zu laufen
// 3.2 für die Zeit, die auf dem Display ausgegeben werden soll
// 3.3 für einen Wahreheitswert, der angibt ob die Stoppuhr läuft
float startTime = 0;
float timeToPrint = 0;
bool stopWatchRunning = false;
void setup() {
// Hier den Setup-Code einfügen, er wird einmalig ausgeführt
// 4. Initialisierung des LCD Displays und Anschalten der Hintergrundbeleuchtung
lcd.init();
lcd.backlight();
// 5. Initialisierung der Pins für die Buttons als Input und setze sie hoch
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
// 6. Start Aufforderung für 1 Sekunde auf dem LCD Display anzeigen
lcd.print("Start druecken");
delay(1000);
}
void loop() {
// Hier den Haupt-Code einfügen, er wird in einer Dauerschleife ausgeführt
// 7. Lese alle Eingänge (roter und grüner Button)
bool button_red = digitalRead(8);
bool button_green = digitalRead(9);
// Führe Berechnungen durch
// 8. Wenn die Stoppuhr läuft
// 8.1 Berechne die Zeit, die auf dem Display angezeigt werden soll, in Sekunden
if (stopWatchRunning == true)
{
timeToPrint = (millis() - startTime) / 1000;
}
// 9. Wenn der grüne Button gedrückt wurde
// 9.1 Speichere die Startzeit der Stoppuhr
// 9.2 Setzte die Zustandsvariable für die Stoppuhr
if (button_green == LOW)
{
startTime = millis();
stopWatchRunning = true;
}
// 10. Wenn der rote Button gedrückt wurde
// 10.1 Setze die Zustandsvariable für die Stoppuhr
if (button_red == LOW)
{
stopWatchRunning = false;
}
// 11. Ausgabe der Zeit auf dem Display
lcd.clear();
lcd.print(timeToPrint);
lcd.setCursor(7,0);
lcd.print("Sekunden");
// 12. Pause von 0,1 Sekunden
delay(100);
}