Домой Актуальное функция millis в arduino как использовать и примеры

функция millis в arduino как использовать и примеры

61
0

Функция millis arduino

Функция millis() в Arduino является одной из ключевых для работы с временными интервалами. Она возвращает количество миллисекунд, прошедших с момента начала выполнения программы. В отличие от функции delay(), которая приостанавливает выполнение кода, millis() позволяет выполнять другие задачи параллельно, что делает её незаменимой для создания многозадачных приложений.

Основное преимущество millis() заключается в её неблокирующем характере. Это означает, что вы можете отслеживать время, не останавливая выполнение основного кода. Например, с её помощью можно управлять светодиодами, опрашивать датчики или отправлять данные по последовательному интерфейсу с определёнными интервалами, не прерывая работу других функций.

В этой статье мы рассмотрим, как правильно использовать функцию millis(), её основные особенности и приведём практические примеры, которые помогут вам эффективно применять её в своих проектах на Arduino.

Основы работы с функцией millis в Arduino

Функция millis в Arduino возвращает количество миллисекунд, прошедших с момента начала выполнения программы. В отличие от delay, она не блокирует выполнение кода, что позволяет выполнять несколько задач одновременно.

Основное преимущество millis заключается в возможности создания неблокирующих временных интервалов. Например, можно управлять светодиодом, мигающим каждую секунду, при этом выполняя другие операции в основном цикле программы.

Для работы с millis обычно используется переменная типа unsigned long, которая хранит время последнего выполнения действия. Сравнивая текущее значение millis с сохранённым, можно определить, прошёл ли нужный интервал времени.

Пример использования:

unsigned long previousMillis = 0;
const long interval = 1000; // Интервал в 1 секунду
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Выполнить действие, например, переключить светодиод
}
}

Важно помнить, что значение millis переполняется через примерно 49 дней. Однако это не влияет на корректность работы, так как разница между текущим и предыдущим значением остаётся верной.

Практические примеры применения millis

Функция millis позволяет создавать временные задержки без блокировки выполнения программы. Например, можно управлять миганием светодиода с интервалом в 500 миллисекунд:


unsigned long previousMillis = 0;
const long interval = 500;
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
}

unsigned long ledPreviousMillis = 0;
unsigned long printPreviousMillis = 0;
const long ledInterval = 1000;
const long printInterval = 2000;
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - ledPreviousMillis >= ledInterval) {
ledPreviousMillis = currentMillis;
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
if (currentMillis - printPreviousMillis >= printInterval) {
printPreviousMillis = currentMillis;
Serial.println("Прошло 2 секунды");
}
}

Также millis можно использовать для создания таймера. Например, для отсчета времени выполнения задачи:


unsigned long startMillis = millis();
void loop() {
if (millis() - startMillis >= 10000) {
Serial.println("10 секунд прошло");
startMillis = millis(); // Сброс таймера
}
}

Эти примеры демонстрируют, как millis помогает создавать гибкие и эффективные программы, избегая блокировки кода.