Arduino uno урок 3

Звернемося до першого уроку. де ми управляли LED. Між включенням і вимиканням якого була секундна затримка.

У використовуваної там програмою (див. Код нижче) був один дуже великий недолік. Для витримки паузи між вкл / викл LED в 1 сек. нами була використана функція delay (). В цей час контролер не може виконувати інші команди в головній функції loop ()

Перше, що ми зробимо, це внесемо невеликі коректування в функцію loop (). Щоб зробити код більш компактним і витонченим, замінимо 2 пари рядків на одну пару. Замість установки значення в HIGH, а потім назад в LOW, ми отримаємо поточне значення ledPin і проінвертіруем його. Тобто якщо воно було HIGH, то стане LOW і навпаки.

Відмінно! Тепер ми вдосконалюємо функцію delay (). Замість цього, ми будемо використовувати функцію millis (). Ця функція повертає кількість мілісекунд, що минув з моменту запуску поточної програми. Функція переповниться (повернеться в нуль) приблизно через 50 діб роботи програми.

Альтернативною функцією є micros (). яка повертає кількість мікросекунд, що минув з моменту запуску поточної програми. Функція переповниться (повернеться в нуль) приблизно через 70 хвилин роботи програми.

У нашому уроці ми будемо використовувати функцію millis ():

В даному прикладі ми ввели дві додаткові змінні currentTime і loopTime. У функції setup () обидві змінні мають одне і теж значення. У функції loop (). змінна currentTime кожен раз оновлюється в циклі. Коли currentTime більше ніж loopTime на 1 секунду (loopTime +1000), то LED змінює свій стан, а змінної loopTime присвоюється поточне значення currentTime.

Зверніть увагу, що в даному прикладі ми не використали функцію delay () і процесор може виконувати інші операції.

Схожі статті