mil­lis()

Lese­zeit: 3 Minu­ten

mil­lis() star­tet den Zeit­neh­mer, die Zeit wird in Mil­li­se­kun­den gemessen. 

Aller­dings kann mil­lis() nicht die aktu­el­le Zeit bestimmen.

Bei­spiel Zeit seit dem Start des Pro­gramms 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");
  }
}

Bei­spiel Zeit der Leucht­dau­er einer LED (zwi­schen der Betä­ti­gung eines Tas­ters) 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 delay

Letzte Aktualisierung: 1. Jan 2024 @ 19:56