Зaдержка на Arduino без delay

Иногда вам нужно делать две вещи одновременно. Например, вы можете мигать светодиодом (или некоторые другие требовательные к процессорному времени функции) пока считывается нажатие кнопки или другие данные. В этом случае, вы не можете использовать delay () , или вам придется  остановить все остальные программы, а индикатор моргнул. Программа может пропустить нажатие кнопки, если она происходит во время delay (). Этот скетч показывает, как мигать индикатором без использования delay () . 

Он следит когда Arduino переключил светодиод последний раз. Затем каждый раз через loop () , он проверяет, достаточно ли прошло времени. Если достаточно, он переключает индикатор (включен или выключен).

Чтобы построить схему, возьмем встроенный светодиод  на   13 пине. Затем подключите вашу плату Arduino на ваш компьютер, запустите программу Arduino и введите код.

 

Код ниже использует millis (), функцию, которая возвращает количество миллисекунд, прошедших со старта текущей программы на плате Arduino для мигания светодиода.
#define ledPin 13
int ledState = LOW;
long previousMillis = 0;
long interval = 1000;
void setup() {
pinMode(ledPin, OUTPUT);
}void loop()
{
unsigned long currentMillis = millis();
if(currentMillis  previousMillis > interval) {
previousMillis = currentMillis;
if (ledState == LOW)
ledState = HIGH;
else
ledState = LOW;

    digitalWrite(ledPin, ledState);
}
}

Метки: , , , , , , . Закладка Постоянная ссылка.

Комментарии запрещены.