millis()

Описание

Возвращает количество миллисекунд, прошедших с момента начала выполнения текущей программы на плате Arduino. Это число переполнится (вернется к нулю) приблизительно через 50 дней.

Синтаксис

Используйте следующую функцию, чтобы получить точное время работы платы в миллисекундах:

millis()

Параметры

Эта функция не принимает параметров.

Возвращаемое значение

Эта функция возвращает количество миллисекунд, прошедших с момента запуска программы. Тип данных: unsigned long.

Пример кода

Этот пример кода выводит в последовательный порт количество миллисекунд, прошедших с момента начала выполнения кода на плате Arduino.

unsigned long myTime;

void setup() {
  Serial.begin(9600);
}
void loop() {
  Serial.print("Time: ");
  myTime = millis();

  Serial.println(myTime); // prints time since program started
  delay(1000);          // wait a second so as not to send massive amounts of data
}

Примечания и предупреждения

  • Возвращаемое значение millis() имеет тип unsigned long; логические ошибки могут возникнуть, если программист попытается выполнить арифметические операции с меньшими типами данных, такими как int. Даже знаковый long может столкнуться с ошибками, так как его максимальное значение вдвое меньше, чем у беззнакового аналога.

  • millis() увеличивается (для 16 МГц AVR-чипов и некоторых других) каждые 1,024 миллисекунды, затем увеличивается на 2 (а не на 1) каждые 41 или 42 тика, чтобы вернуть синхронизацию; таким образом, некоторые значения millis() пропускаются. Для точного измерения времени на коротких интервалах рассмотрите использование micros().

  • millis() обернется к 0 приблизительно через 50 дней (micros — приблизительно через 70 минут).

  • Переконфигурация таймеров микроконтроллера может привести к неточным показаниям millis().

См. также