Замена delay() на millis() в Arduino IDE

| 15.12.2022 | 0 Comments

Ниже приведен пример мигания светодиодом без использования delay() для Arduino IDE.

int gpio13Led = 13;
int ledStateLow = LOW; // HIGH | LOW
 
int ledState = ledStateLow;
long previousMillis = 0;
bool ledRun = false;
 
void led(int count = 1, long interval = 60){
  for (int i = 0; i < count; i++) {
    ledRun = true;
    while(ledRun){
      unsigned long currentMillis = millis();
      if (currentMillis - previousMillis >= interval) {
        previousMillis = currentMillis;
        if (ledState == ledStateLow) {
          ledState = !ledState;
          digitalWrite(gpio13Led, ledState);
        } else {
          ledState = !ledState;
          digitalWrite(gpio13Led, ledState);
          ledRun = false;
        }
      }
    }
  }
}
 
void setup(void) {
  pinMode(gpio13Led, OUTPUT);
  digitalWrite(gpio13Led, ledStateLow);
}
 
void loop(void) {
  led(1);
  // led(3, 200);
}

Tags: , ,

Категория: Программирование

Комментари (0)

Trackback URL | Comments RSS Feed

Комментариев пока что нет. Вы будете первым!

Оставить комментарий