При разработке программ для Arduino очень часто приходится использовать функцию delay(). Основная проблема в использовании этой функции является то что при ее исполнении другие участки кода не могут быть выполнены.
Есть альтернативные варианты построения кода программы, которые позволяют увеличить производительность контроллера Arduino и писать более грамотный код. Ниже показан пример подобной программы, которая используют задержку без оператора delay().
const int ledPin = 13; // номер выхода, подключенного к светодиоду int ledState = LOW; //состояние светодиода long previousMillis = 0; //время последнего переключения светодиода long interval = 1000; // интервал между включение/выключением светодиода (1 секунда) void setup() { pinMode(ledPin, OUTPUT); } void loop() { // здесь будет код, который будет работать постоянно // и который не должен останавливаться на время между переключениями свето unsigned long currentMillis = millis(); //проверяем не прошел ли нужный интервал, если прошел то if(currentMillis - previousMillis > interval) { // сохраняем время последнего переключения previousMillis = currentMillis; // если светодиод не горит, то зажигаем, и наоборот if (ledState == LOW) ledState = HIGH; else ledState = LOW; // устанавливаем состояния выхода, чтобы включить или выключить светодиод digitalWrite(ledPin, ledState); } }