LED villogtatás a "millis()" függvény használatával

A "klasszikus" 13-as lábon található LED villogtatása. A példaprogrambeli "blink" példaprogram ezt a "delay" függvénnyel valósítja meg, ami nem egy túl elegáns megoldás, mivel a program többi részét is várakozásra kényszeríti. A "millis()" függvénnyel az Arduino indítása óta eltelt időt lehet lekérdezni miliszekundumban. Az ezt tároló float is időnként megtellik, ilyenkor a számlálás újraindul (overflow).

  • pause_time = 100; : a triggerek közötti várakozási idő, itt speciel 0,1 sec
  • // switch : ide kell a triggerhez (az idő elteltéhez) kötött eseményeket beírni
// 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
  }
 
}

>> Vissza az Arduino projektek listájához