Функции Arduino delay() и delayMicroseconds() играют важную роль, и без этих команд практически невозможно написать большинство программ. На нашем сайте вы найдете множество примеров, где нужно управлять временем с помощью delay, например, чтобы контакт кнопки не дребезжал при нажатии. Рассмотрим назначение и применение команд delay и delayMicroseconds в программировании микроконтроллера Ардуино.
СОДЕРЖАНИЕ ►
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- светодиод и резистор
- макетная плата
- коннекторы
Дополнительные материалы на эту тему:
Функция delayMicroseconds останавливает выполнение программы на заданное количество микросекунд (1 секунда считается за 1 000 000 микросекунд). Если в коде необходима задержка более чем на несколько тысяч микросекунд, рекомендуется использовать функцию delay. Далее рассмотрим на простом примере использование функций delayMicroseconds и delay в Arduino IDE, чтобы заставить мигать светодиод.
Функции delayMicroseconds и delay в языке Ардуино

Функция задержки delay Ардуино останавливает выполнение программы на заданное количество миллисекунд (1 секунда соответствует 1000 миллисекунд). Пока программа останавливается с помощью команды delay(), нельзя опрашивать датчики, подключенные к плате, или выполнять другие операции, такие как запись данных в EEPROM Arduino. В этом случае следует использовать функцию millis для активации многозадачности.
Функция delay Ардуино, пример использования в скетче

Задержка delay() Arduino часто встречается в программах. Если вы хотите узнать, как заменить delay на millis в языке программирования Arduino, мы также рассмотрели этот вопрос в другой статье. Сейчас мы разберем основное назначение функции задержки delay на примере мигающего светодиода. Вам понадобится только сама плата Arduino Uno, но вы можете подключить светодиод к контакту 13, как показано на картинке выше.
Скетч для мигающего светодиода с delay() Arduino
#define LED 13
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, HIGH);
delayMicroseconds(1000);
digitalWrite(LED, LOW);
delayMicroseconds(1000);
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}
Заключение. Функция Arduino millis не останавливает выполнение программы, а заново начинает отсчет миллисекунд с обнулением счетчика. В отличие от них, delay и delayMicroseconds останавливают выполнение программы на заданное количество миллисекунд или микросекунд соответственно. Применение той или иной функции паузы в программе для микроконтроллера зависит от поставленной для вас задачи.
