LED blinken lassen ohne delay() Funktion

Das folgende Programm ist funktionell das gleiche wie das erste Blink-Programm. Allerdings wird hier auf die Verwendung der delay() Funktion verzichtet. Der Nachteil dieser delay() Funktion ist folgender: Während die Funktion die Zeit abwartet, können keine weitere Aktionen durchgeführt werden. Das folgende Programm umgeht diesen Nachteil. Es können z.B. trotzdem noch Werte eingelesen oder Ausgaben auf einem LCD Display gemacht werden.

blink2.ino
/**
  * Dieser Sketch "Blink" laesst die SMD-LED auf dem Arduino Board blinken.
  * Dabei wird auf die delay() Funktion verzichtet.
  *
  */
 
int led = 13;
int state = LOW; // Variable um den aktuellen Status der LED zu zwischen zu speichern
unsigned long timestamp; // Variable um den aktuellen Timestamp zu speichern
unsigned long lastupdate = 0; // Variable um den Timestamp des letzten Update zu speichern 
 
void setup () {
  Serial.begin (9600);
  pinMode (led, OUTPUT);
}
 
void loop () {
  timestamp = millis ();
  /* Die Funktion millis() gibt den Anzahl der vergangenen Millisekunden seit dem Start
  des Arduino zurück. Fängt nach ca. 50 Tagen wieder bei 0 an zu zählen. */
  if (timestamp - lastupdate > 1000) { // sind schon 1000 Millisekunden vergangen?
    state = digitalRead (led); // digitalRead() gibt den aktuellen Status des IO-Port zurück (High/Low)
    lastupdate = timestamp; // speichert den Timestamp des letzten Statuswechsel (LED an/aus)
    digitalWrite (led, !state); // setzt den IO-Port 13 auf den gegenteiligen Status.
    /* Das Ausrufezeichen vor der Variable state bewirkt eine logische Negation.
       Aus HIGH wir LOW und aus LOW wird HIGH */
    Serial.println("LED umgeschaltet");
  }
  /*
     An dieser Stelle könnte weiterer Code folgen der trotz blinken weiter ausgeführt wird!
  */
}
f11/technik/arduino/programme/led-blinken-ohne-delay.txt · Zuletzt geändert: 2019/09/29 12:03 (Externe Bearbeitung)
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0