Посмотр рубрик

Время

Уроки по использованию этих функций:

millis #

unsigned long millis()
Вернёт количество миллисекунд (мс, ms, 10^-3 или 0.001 секунды), прошедшее с запуска программы. Максимальное значение - 2^32-1 - 4 294 967 секунд / 71 582 минут / 1 193 часов / 49.7 суток. После переполнения начнёт счёт с нуля.

На AVR Arduino каждые 41-42 миллисекунды есть пропуск значения, т.е. например идёт 1228, 1229, 1331

Получаем из миллиса сутки, часы, минуты и секунды работы программы:

uint32_t sec = millis() / 1000ul;
uint16_t days = (sec / 3600ul) / 24;
uint8_t hours = (sec / 3600ul) % 24;
uint8_t mins = (sec % 3600ul) / 60ul;
uint8_t secs = (sec % 3600ul) % 60ul;

Serial.print(days);
Serial.print(':');
Serial.print(hours);
Serial.print(':');
Serial.print(mins);
Serial.print(':');
Serial.println(secs);

Или так:

uint32_t sec = millis() / 1000ul;
uint8_t secs = sec % 60;
sec /= 60ul;
uint8_t mins = sec % 60ul;
sec /= 60ul;
uint8_t hours = sec % 24ul;
uint8_t days = sec / 24ul;

Serial.print(days);
Serial.print(':');
Serial.print(hours);
Serial.print(':');
Serial.print(mins);
Serial.print(':');
Serial.println(secs);

micros #

unsigned long micros()
Вернёт количество микросекунд (мкс, us, 10^-6 или 0.000001 секунды), прошедшее с запуска программы. Максимальное значение - 2^32-1 - 4 295 секунд / 71.6 минут / 1.2 часа. После переполнения начнёт счёт с нуля.

На AVR Arduino 16MHz micros имеет разрешение 4 мкс, т.е. результат функции всегда кратен 4

delay #

void delay(unsigned long ms)
Задержка в миллисекундах. Максимальное значение 2^32-1 - 4 294 967 секунд / 49.7 суток.

delayMicroseconds #

void delayMicroseconds(unsigned int us)
Задержка в микросекундах.

На AVR Arduino максимальное значение 16383 - для больших задержек используйте delay(), точность в микросекундах всё равно не очень высокая

Полезные страницы #

(1 голос)
Подписаться
Уведомить о
guest

2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Прокрутить вверх