Мы уже рассматривали пример того, как можно мигать светодиодом, в том примере мы использовали функцию delay(). Главный недостаток такого подхода заключается в том, что во время выполнения delay() программа "замораживается" и не может выполнять других действий. В реальных задачах нам обычно требуется, чтобы программа не только мигала светодиодом, но и выполняла другие полезные действия и не пропустила нажатие кнопки, например. В этом примере мы обойдемся без delay, программа будет запоминать время когда был включен или выключен светодиод и в каждом цикле loop() будет проверять не прошло ли достаточно времени для переключения светодиода.
Необходимые компоненты
- Arduino контроллер
- Светодиод
- резистор 220 Ом
Подключение
Подключение, точно такое же как и в примере мигания с помощью delay()

Во многих контроллерах Arduino есть встроенный светодиод, подключенный к порту 13.
Схема

Код
В коде ниже используется функция millis(), возвращающая количество милисекунд с момента начала работы текущей программы на Arduino.
unsigned long currentMillis = millis(); |
if (currentMillis - previousMillis > interval) { |
previousMillis = currentMillis; |
digitalWrite(ledPin, ledState); |
See Also