//#include <SR04.h>
//#include <HCSR04>
//https://sites.schaltungen.at/arduino-uno-r3/stoppuhr.html
//https://www.youtube.com/watch?v=aaqaAXlZbuc
#define TASTE 3
#define MILLISPROSTUNDE 3600000 // Konstanten zur einfacheren
//Umrechnung
#define MILLISPROMINUTE 1000000 // von Millisekunden in andere Einheiten
#include "Wire.h"
#include "Adafruit_SSD1306.h" // Bibliothek für das OLED-Display
Adafruit_SSD1306 display(1);
long Timer = 0; // nachfolgend: Hilfsvariablen zur
//Zeitmessung
long Startzeit = 0; // Zeitpunkt A
long Stoppzeit = 0; // Zeitpunkt B
long Zeitdifferenz = 0; // abgelaufene Zeit in Millisekunden
byte Stunden; /*byte Minuten*/; byte Sekunden; byte Tausendstel;
boolean aktiv = false; // Zeitmessung aktiv (true) oder angehalten (false)
void setup()
{
pinMode(TASTE, INPUT_PULLUP);
display.begin(SSD1306_SWITCHCAPVCC, 60); // Display-Initialisierung
display.clearDisplay();
display.setTextColor(WHITE); // Farbe weiß auswählen
}
void loop()
{
if (millis() > Timer) // (1)
{
if (aktiv) // (2)
Zeitdifferenz = millis() - Startzeit;
else
Zeitdifferenz = Stoppzeit - Startzeit;
Sekunden = (Zeitdifferenz % MILLISPROMINUTE) / 1000;
Tausendstel = Zeitdifferenz % 1000;
display.clearDisplay();
display.setTextSize(2);
display.setCursor(40, 0);
display.setTextSize(1);
if (aktiv)
display.println("aktiv!");
else
display.println("Resultat:");
display.setCursor(30, 10);
display.setTextSize(2);
if (Sekunden < 10)
display.print("0");
display.print(Sekunden);
if (aktiv) // Tausendstel nur anzeigen, wenn
{ // Zeitnahme angehalten wurde.
display.print(".");
//if (Tausendstel < 100)
// display.print("0");
//if (Tausendstel < 10)
//display.print("0");
display.print(Tausendstel);
}
display.display();
Timer = millis() + 10; //1000; // nächste Displayaktualisierung in 1 Sek.
}
if (!digitalRead(TASTE)) // Wird gerade die Taste gedrückt?
{
if (aktiv)
{
Stoppzeit = millis();
aktiv = false;
Timer = 0;
}
else
{
Startzeit = millis();
aktiv = true;
Timer = 0;
}
while (!digitalRead(TASTE)); //warten, bis Taste wieder losgelassen wurde
}
display.setTextSize(1);
}