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