de:project:blink_with_millis

Blinken der LED am klassischen am Pin 13. Das Beispielprogramm blink im Programm macht mit der Funktion delay, was nicht elegante Lösung ist, weil den Rest des Programms zum Warten zwingt. Mit der Funktion millis() kann die verstrichene Zeit seit dem Start von Arduino in Millisekunden abgefragt werden. Der Speicher, der dies speichert, ist manchmal voll, in diesem Fall beginnt der Countdown erneut (overflow).

  • pause_time = 100; : waiting time: 0.1 sec
  • after // switch : timer-related operations can be inserted here
// source: ob121.com - Vamos Sandor 2018
 
float current_time, old_time, pause_time; // variables for "Time"
bool blink_on;  // state of blink
 
void setup() {
  pinMode(13, OUTPUT);      // blink LED def.
  current_time = millis();  // read time
  old_time = current_time;  // default: start from 0.
  pause_time = 100;         // pause (waiting) time, in here 0,1 sec
}
 
// the loop function runs over and over again forever
void loop() {
 
// ----------------------- timer
 
  current_time = millis();        // read time
 
  if (current_time < old_time) {  // after overflow
    old_time = current_time;      // new start
  }
  if ((current_time - old_time) > pause_time) {    // time is gone
    old_time = current_time;      // new start
 
    // switch 
    blink_on = !blink_on;         // trigger event(s)
  }
 
// ------------------------ blink 
  if (blink_on) {
    digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  } else {
    digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  }
 
}

>> Zurück zur Liste der Arduino-Projekte

  • de/project/blink_with_millis.txt
  • 2022/04/21 15:01
  • ()