Главное меню
Услуги
I would like to ask you to sign up with the Best Hosting and read more web hosting reviews.
Построение задержки без delay()
При разработке программ для 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); } }