millis() startet den Zeitnehmer, die Zeit wird in Millisekunden gemessen.
Allerdings kann millis() nicht die aktuelle Zeit bestimmen.
Beispiel Zeit seit dem Start des Programms messen:
int TASTER = 6;
int TasterLesen;
float StartZeit;
float VerstricheneZeit;
float Sekunden;
void setup()
{
pinMode(TASTER, INPUT_PULLUP);
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial);
delay(500);
Serial.println("Verstrichene Zeit seit dem Start des Programms:");
Serial.println("-----------------------------------------------");
StartZeit = millis();
}
void loop()
{
TasterLesen = digitalRead(TASTER);
if (TasterLesen == LOW)
{
delay(200);
// Zeit berechnen
float Sekunden;
VerstricheneZeit = millis() - StartZeit;
// 1000 ms = 1 s
Sekunden = VerstricheneZeit / 1000;
// Sekunden in String umwandeln
String AnzahlSekunden = String(Sekunden);
// . durch , ersetzen
AnzahlSekunden.replace(".", ",");
// Ausgabe im Seriellen Monitor
Serial.println(AnzahlSekunden + " Sekunden");
}
}
Beispiel Zeit der Leuchtdauer einer LED (zwischen der Betätigung eines Tasters) messen:
// Bibliothek Bounce2 einbinden
#include "Bounce2.h"
// Bounce starten
// Namen des Objekts Bounce (TasterGedrueckt) festlegen
Bounce TasterGedrueckt = Bounce();
// Pins LED und Taster
int LED = 7;
int TASTER = 6;
/*
setzt den Status
Status true -> LED an
Status false -> LED aus
beim Start soll die LED ausgeschaltet sein
*/
bool Status = false;
// Startzeit wird mit millis() ermittelt
unsigned long Startzeit;
// verstrichene Zeit in Millisekunden
unsigned long VerstricheneZeit;
float Sekunden;
int Minute;
void setup() {
pinMode(LED, OUTPUT);
/*
Namen des Objekts Bounce (TasterGedrueckt) dem Taster zuordnen (attach)
Zeitintervall einstellen
INPUT_PULLUP -> Eingangspegel auf HIGH setzen
*/
TasterGedrueckt.attach(TASTER, INPUT_PULLUP);
TasterGedrueckt.interval(20);
Serial.begin(9600);
}
void loop()
{
// Tasterstatus abfragen
if (TasterGedrueckt.update())
{
// Taster wurde gedrückt, das Signal ist gefallen
if (TasterGedrueckt.fell())
{
// LED ist aus → Status == false
if (Status == false) {
digitalWrite(LED, HIGH);
// Status auf true (an) setzen
Status = true;
// wenn Status == true -> Timer starten
if (Status) Startzeit = millis();
}
// LED ist an → Status == true
else if (Status == true)
{
digitalWrite(LED, LOW);
// Dauer des Einschaltend der LED berechnen
VerstricheneZeit = millis() - Startzeit;
Sekunden = VerstricheneZeit / 1000.0;
String AnzeigeSekunden = String(Sekunden);
AnzeigeSekunden.replace(".", ",");
// Sekunden anzeigen
Serial.print("Leuchtdauer: " + AnzeigeSekunden + " Sekunde(n)");
// Minuten berechnen und anzeigen
Minute = Sekunden / 60;
if (Minute > 0) {
Serial.print(" = " + String(Minute) + " Minute(n): ");
Sekunden = Sekunden - Minute * 60;
Serial.println(String(Sekunden) + " Sekunde(n)");
}
// Status auf false (aus) setzen
Status = false;
}
}
}
}
delay
Letzte Aktualisierung: