Drossel 150µH


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Arduino - Zeitfunktionen

delay()

Delay() stellt eine Wartefunktion dar und hält das Programm auf eine bestimmte Zeit an. Die Wartezeit wird in Klammern angegeben. Die Angaben erfolgen in Millisekunden. Während der Wartezeit werden keine anderen Anweisungen ausgeführt. Beispiel:


  // ----------------------------------------------------------
  // Diode Ein / Aus


  int LedPin = 35;

  void setup() {
      pinMode(LedPin, OUTPUT);
  }

  void loop() {
    digitalWrite (LedPin, HIGH);
    delay (1000);
    digitalWrite (LedPin, LOW);
    delay (500);
  }

  // ----------------------------------------------------------

Das Beispiel setzt voraus, dass am Pin Nr. 35 eine Leuchtdiode mit einem Vorwiderstand angeschlossen wurde. Im Programm wird zunächst der Pin 35 als Ausgang definiert. Man kann natürlich für das Beispiel einen anderen Pin verwenden. Sobald das Programm startet, wird mit dem Befehl digitalWrite (LedPin, HIGH) die Diode am Pin 35 eingeschaltet und mit delay (1000) das Programm für eine Sekunde eingehalten. Sobald die Zeit abgelaufen ist, wird die Diode wiederum mit digitalWrite (LedPin, LOW) ausgeschaltet und die Zeit von 0,5 Sek. abgewartet. Anschließend werden die Vorgänge wiederholt. Als Ergebnis bekommen wir eine blinkende Diode, die abwechselnd 1 Sek. an und 0,5 Sek. aus ist.

delayMicroseconds()

delayMicroseconds() funktioniert wie delay(), die Zeitangaben erfolgen hier jedoch in Mikrosekunden.

millis()

Mit der Funktion millis() kann Zeit in Millisekunden gemessen werden. Vorzugsweise, da die Anzahl der Millisekunden schnell ansteigen kann, werden hier Variablen angewendet, die als unsigned long definiert werden. Mit dem Befehl ist es möglich, eine Zeitspanne von 50 Tagen zu erfassen. Beispiel:


  // ----------------------------------------------------------
  // Diode Ein / Aus


  int LedPin = 35;
  unsigned long MillisAktuell = 0;
  unsigned long LedStart = 0;
  bool LedEinAus;
  unsigned long ZeitLang = 1000;
  unsigned long ZeitKurz = 500;

  void setup() {
      pinMode(LedPin, OUTPUT);
  }

  void loop() {
    MillisAktuell = millis();
    if (LedEinAus == LOW && LedStart + ZeitLang > MillisAktuell) {
      LedEinAus = HIGH;
    }
    if (LedEinAus == HIGH && LedStart + ZeitLang < MillisAktuell) {
      LedEinAus = LOW;
    }
    if (LedStart + ZeitLang + ZeitKurz <= MillisAktuell) {
      LedStart = MillisAktuell;
    }
    digitalWrite (LedPin, LedEinAus);
  }

  // ----------------------------------------------------------

Als Ergebnis bekommen wir, ähnlich wie im vorhergehenden Beispiel, ebenfalls eine blinkende Diode. Da die Variable MillisAktuell fortlaufend ansteigt, müssen wir für die Intervall-Überwachung selbst sorgen. Dazu dient die Variable LedStart. Sobald die Diode einen vollen Zyklus durchlaufen hat (EIN für 1 Sek., AUS für 0,5 Sek.), wird diese Variable mit dem aktuellen Wert von Millisekunden belegt, den die Funktion millis() liefert. So werden nach jedem Durchlauf neue Intervalle gebildet, bei denen entschieden wird, ob die Diode ein- oder ausgeschaltet werden soll.
Der Vorteil von millis() ist, dass man parallel zur Zeitmessung andere Programmteile ausführen lassen kann. Hier könnte man, nachdem mit digitalWrite (LedPin, LedEinAus); die Diode ein- oder ausgeschaltet wurde, einen weiteren Programmcode anbinden.

micros()

Ähnlich wie millis(). Micros() gibt die Anzahl der Mikrosekunden zurück, die seit dem Programmstart vergangen sind. Mit micros() kann man eine Zeitspanne von ca. 70 Minuten erfassen.


Arduino_Programmierung




Google-Suche auf MEINE-SCHALTUNG.de :


Bedienfeld Heizungssteuerung

Home Impressum Datenschutz