millis()

millis() — функция для получения количества миллисекунд, прошедших с момента запуска Arduino. Это один из ключевых инструментов для работы со временем в проектах на Arduino.

Синтаксис

unsigned long millis();

Особенности работы

  • Возвращает значение типа unsigned long
  • Отсчет начинается с момента включения/перезагрузки
  • Максимальное значение: около 50 дней (4,294,967,295 мс)
  • После достижения максимума счетчик сбрасывается

Важные особенности

  • Функция не останавливается при выполнении других задач
  • Позволяет создавать сложные временные схемы
  • Требует внимательного учета переполнения счетчика
  • Работает параллельно с основным кодом

Рекомендации по использованию

  • Сохраняйте предыдущее время в отдельной переменной
  • Используйте тип unsigned long для хранения значений
  • Учитывайте возможное переполнение счетчика
  • Проверяйте разницу между текущим и предыдущим временем

Обработка переполнения

Для надежной работы с большими интервалами времени рекомендуется использовать:

Пример

unsigned long timer1 = 0;
unsigned long timer2 = 0;
const unsigned long interval1 = 500; // 500 мс
const unsigned long interval2 = 1000; // 1000 мс

void setup() {
  Serial.begin(9600);
}

void loop() {
  unsigned long currentTime = millis();
  
  // Первый таймер
  if (currentTime - timer1 >= interval1) {
    Serial.println("Таймер 1 сработал");
    timer1 = currentTime;
  }
  
  // Второй таймер
  if (currentTime - timer2 >= interval2) {
    Serial.println("Таймер 2 сработал");
    timer2 = currentTime;
  }
  
  // Другой код программы
}

Примечание

Преимущества перед delay()

  • Не блокирует выполнение программы
  • Позволяет реализовать несколько временных задач одновременно
  • Обеспечивает более гибкое управление временем

Практическое применение

Функция используется для:

  • Создания таймеров
  • Управления периодическими действиями
  • Реализаций задержек без блокировки
  • Синхронизации событий
  • Измерения интервалов времени

Тип функции

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *