Данная функция выводит в последовательный порт время работы платы Arduino после включения или перезагрузки в формате ЧАСЫ:МИНУТЫ:СЕКУНДЫ 00:00:00
ВСТУПЛЕНИЕ
Что такое функция millis() ?
Время работы Arduino ничем не ограничено. Этот микроконтроллер может быть включен постоянно.
Для подсчета времени с момента включения или c момента перезагрузки платы существует функция millis() .
Arduino считает количество миллисекунд, которое прошло с момента запуска платы.
Их количество можно узнать с помощью функции millis().
Например, пусть у нас есть переменная time. В случае использования строки кода time=millis(); , переменная time будет содержать некоторое количество миллисекунд.
В одной секунде содержится 1000 миллисекунд, поэтому время измеряемое в миллисекундах неудобно для восприятия человеком, но вполне понятно машинам, роботам и микросхемам.
После 50 суток работы Arduino встроенный счетчик миллисекунд обнуляется и начинает отсчет снова.
Ниже приводится код функции TimePrint, которая переводит миллисекунды в понятный человеку формат.
// RobotDay.ru TimePrint Function void TimePrint() { int time=millis()/1000; if (time/60/60<10) { Serial.print ("0"); } Serial.print (time/60/60); Serial.print (":"); if (time/60%60<10) { Serial.print ("0"); } Serial.print ((time/60)%60); Serial.print (":"); if (time%60<10) { Serial.print ("0"); } Serial.println (time%60); }
Данная функция выводит в последовательный порт время работы платы Arduino после включения или перезагрузки в формате часы:минуты:секунды ( 00:00:00 ).
Вызывается в вашем коде, как TimePrint();
Использует встроенную функцию millis(). Обратите внимание, что счетчик функции millis() сбрасывается после 50 дней работы.
Полезна для отладки и тестирования различных датчиков и сенсоров.
Логика расчета секунд, минут и часов при пересчете из миллисекунд.
Как пересчитывать секунды, минуты, часы и дни в Arduino.
Чтобы узнать общее количество секунд, значение функции millis() необходимо разделить на 1000.
Чтобы количество секунд перевести в минуты, делим их значение на 60. Остаток от целочисленного деления – точные секунды ( от 0 до 59 ).
Чтобы количество минут перевести в часы, делим их значение на 60. Остаток от целочисленного деления – точные минуты ( от 0 до 59 ).
Таким образом получаем значение времени работы платы Arduino в обычном понятном формате.
В данной программе расчет идет несколько в другом порядке.
Переводим в секунды, теперь их значение содержит переменная time.
time=millis()/1000
Далее сразу считаем целые часы и выводим их значение в последовательны порт.
if (time/60/60<10) { Serial.print ("0"); } Serial.print (time/60/60); Serial.print (":");
Затем высчитываем целые минуты, их остаток уже за вычетом целых часов.
if (time/60%60<10) { Serial.print ("0"); } Serial.print ((time/60)%60); Serial.print (":");
И высчитываем секунды.
if (time%60<10) { Serial.print ("0"); } Serial.println (time%60);
Время с момента включения Ардуино будет выглядеть следующим образом, например : 05:42:14
Чтобы перевести время в число необходимо выполнить обратную операцию.
Таким образом, вывод времени на Ардуино будет осуществляться в удобном формате.
Это пример классического программирования функции millis(), при использовании классов и объектов (классы и объекты в Arduino) код можно оптимизировать.
Функция millis() позволяет собрать на Ардуино простейший секундомер, счетчик времени, с использованием тактовых кнопок и семисегментных индикаторов, светодиодов.
Использовать функцию millis() и семисегментный индикатор, чтобы сделать цифровые часы, не рекомендуется, так как для этого нужно использовать более точные часы реального времени.
RTC ( Real Time Clock ) – эти микросхемы имеют собственный элемент питания, не зависят от выключения и перезагрузок платы Ардуино, позволяют отслеживать и время и дату.
Например, можно использовать плату DS1302 Real Time Clock.
Модули часов реального времени производятся на нескольких популярных микросхемах.
Leave a Reply