Arduino — функции — время
Функция millis()
Функция millis() позволяет считать время, прошедшее с момента запуска текущей программы. Функция возвращает значение в формате «unsigned long» и позволяет считать значения до 50 дней с момента запуска программы. По прошествии этого времени отсчет начнется заново. Ниже приведен пример использования функции millis():
unsigned long time; void setup(){ Serial.begin(9600); } void loop(){ Serial.print(«Время включения: «); time = millis(); // запомнить значение времени Serial.println(time); // отправка информации через последовательный порт delay(1000); }
В приведенном выше примере, каждую секунду в монитор порта будет отправляться информация о времени, которое прошло с момента запуска программы. Поскольку время измеряется в миллисекундах, то каждое последующие значение будет отличаться на 1000. Точность считывания зависит от стабильности кварцевого резонатора Arduino.
Функция micros()
Функция micros() является аналогом функции millis(), разница заключается в точности измерения. С помощью функции micros() мы получим время, прошедшее от запуска текущей программы в микросекундах. Счетчик подсчитанных микросекунд будет сброшен по истечении 70 минут. Ниже приведен пример использования функции micros():
unsigned long time; void setup(){ Serial.begin(9600); } void loop(){ Serial.print(«Время с момента запуска: «); time = micros(); Serial.print(time); Serial.println(» мкс «); delay(1000); }
Так же, как и в примере с функцией millis(), здесь каждую секунду в монитор порта будет отправляться информация об измеренном времени, разница состоит только в том, что в данном случае время измеряется в микросекундах.
Функция delay()
Функция delay() позволяет приостановить выполнение текущей программы на указанное в параметре время. Синтаксис команды выглядит следующим образом:
//команды delay(500); //задержка на 0,5 сек //команды delay(1000); //задержка на 1с
Время указывается в миллисекундах (1 сек = 1000 мс). Данный параметр может иметь тип «unsigned long», который находится в диапазоне от 0 до 4294967295. Ниже пример использования команды delay():
#define ledPin 13 void setup() { pinMode(ledPin,13); } void loop() { digitalWrite(ledPin,HIGH); //включить LED delay(500); //подождать 500ms (0,5 сек) digitalWrite(ledPin,LOW); //выключить LED delay(1000); //подождать 1000 мс (1 сек) }
В приведенном выше примере, светодиод загорается на 0,5 секунды, затем гаснет на 1 секунду и так далее, пока питание Arduino не будет отключено.
Функция delayMicroseconds()
Функция delayMicroseconds() является разновидностью функции delay(). Разница заключается в количестве и точности отсчета времени. Функция delay() позволяет отсчитывать время с точностью до 1 миллисекунды, в то время как delayMicroseconds() с точностью до 1 микросекунды.
Значение, которое можно указать в параметре, находиться в диапазоне от 0 до 16383. Для более длинных временных интервалов следует использовать функцию delay() или несколько раз использовать delayMicroseconds().
#define outPin 8 void setup() { pinMode(outPin, OUTPUT); // контакт 8 как выход } void loop() { digitalWrite(outPin, HIGH); // контакт 8 высокое состояние delayMicroseconds(50); // пауза 50 микросекунд digitalWrite(outPin, LOW); // контакт 8 низкое состояние delayMicroseconds(50); // пауза 50 микросекунд }
Этот пример генерирует меандр с периодом 100 микросекунд и заполнением 50%.