delay() / Arduino
Описание
Приостанавливает программу на определенное время, указанное в параметре (в миллисекундах).
Синтаксис
delay(ms)
Параметры
ms
: количество миллисекунд для паузы (unsigned long
).
Возвращает
Ничего.
Пример кода
Данный код приостанавливает программу на одну секунду перед переключением выходного вывода.
int ledPin = 13; // светодиод подключен к выводу 13
void setup()
{
pinMode(ledPin, OUTPUT); // установить цифровой вывод на выход
}
void loop()
{
digitalWrite(ledPin, HIGH); // включить светодиод
delay(1000); // подождать секунду
digitalWrite(ledPin, LOW); // выключить светодиод
delay(1000); // подождать секунду
}
Примечания и предупреждения
В то время как создать мигание светодиодом с помощью функции delay()
легко, и многие скетчи используют короткие задержки для таких заданий, как подавления дребезга контактов кнопки, использование delay()
в скетче имеет существенные недостатки. Во время выполнения функции задержки не могут продолжаться никакие другие считывания показаний датчиков, математические вычисления или манипуляции выводами, поэтому, по сути, это приводит к остановке большинства других действий. Для альтернативных подходов к управлению согласованностью действий по времени смотрите функцию millis()
и приведенный с ней скетч. Более осведомленные программисты, если скетч Arduino очень прост, обычно избегают использования delay()
для управления расписанием событий дольше десятков миллисекунд.
Когда функция delay()
управляет чипом ATmega, выполнение некоторых вещей продолжается, поскольку функция задержки не отключает прерывания. Данные последовательной связи, которые появляются на выводе RX, записываются, значения ШИМ (analogWrite
) и состояния выводов поддерживаются, а прерывания будут работать так, как должны.