Описание
Приостанавливает выполнение программы на указанный промежуток времени (в миллисекундах). (В 1 секунде - 1000 миллисекунд.)
Синтаксис
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() в коде программы имеет существенные недостатки. В процессе действия delay() такие операции, как считывание данных с датчиков, математические вычисления или операции с выводами не могут выполняться. Фактически, функция delay() приводит к остановке практически всех операций. Альтернативный способ контролировать время - использование функции millis() (смотрите пример кода в Инструкции: Мигание без Delay). Опытные программисты обычно избегают использования delay() для установки временных интервалов больше нескольких десятков миллисекунд (за исключением очень простых программ Arduino).
Некоторые операции продолжают функционировать и во время выполнения delay(), поскольку она не запрещает прерывания. Это означает, что будут записываться данные, поступающие на вывод RX по последовательному интерфейсу, продолжит генерироваться ШИМ (analogWrite), а также обрабатываются остальные прерывания.
Смотрите также:
micros()
millis()
delayMicroseconds()
Инструкция: Мигание без Delay
Справочник
Материалы взяты с официального сайта проекта Arduino и представлены по лицензии Creative Commons Attribution-ShareAlike 3.0 License.
Источник: http://arduino.cc/en/Reference/Delay |