Функция millis()
Функция millis() позволяет считать время, прошедшее с момента запуска текущей программы. Функция возвращает значение в формате «unsigned long» и позволяет считать значения до 50 дней с момента запуска программы. По прошествии этого времени отсчет начнется заново. Ниже приведен пример использования функции millis():
[slh lang=»php»]
unsigned long time;
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print(«Время включения: «);
time = millis(); // запомнить значение времени
Serial.println(time); // отправка информации через последовательный порт
delay(1000);
}
[/slh]
В приведенном выше примере, каждую секунду в монитор порта будет отправляться информация о времени, которое прошло с момента запуска программы. Поскольку время измеряется в миллисекундах, то каждое последующие значение будет отличаться на 1000. Точность считывания зависит от стабильности кварцевого резонатора Arduino.
Функция micros()
Функция micros() является аналогом функции millis(), разница заключается в точности измерения. С помощью функции micros() мы получим время, прошедшее от запуска текущей программы в микросекундах. Счетчик подсчитанных микросекунд будет сброшен по истечении 70 минут. Ниже приведен пример использования функции micros():
[slh lang=»php»]
unsigned long time;
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print(«Время с момента запуска: «);
time = micros();
Serial.print(time);
Serial.println(» мкс «);
delay(1000);
}
[/slh]
Так же, как и в примере с функцией millis(), здесь каждую секунду в монитор порта будет отправляться информация об измеренном времени, разница состоит только в том, что в данном случае время измеряется в микросекундах.
Функция delay()
Функция delay() позволяет приостановить выполнение текущей программы на указанное в параметре время. Синтаксис команды выглядит следующим образом:
[slh lang=»php»]
//команды
delay(500); //задержка на 0,5 сек
//команды
delay(1000); //задержка на 1с
[/slh]
Время указывается в миллисекундах (1 сек = 1000 мс). Данный параметр может иметь тип «unsigned long», который находится в диапазоне от 0 до 4294967295. Ниже пример использования команды delay():
[slh lang=»php»]
#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 сек)
}
[/slh]
В приведенном выше примере, светодиод загорается на 0,5 секунды, затем гаснет на 1 секунду и так далее, пока питание Arduino не будет отключено.
Функция delayMicroseconds()
Функция delayMicroseconds() является разновидностью функции delay(). Разница заключается в количестве и точности отсчета времени. Функция delay() позволяет отсчитывать время с точностью до 1 миллисекунды, в то время как delayMicroseconds() с точностью до 1 микросекунды.
Значение, которое можно указать в параметре, находиться в диапазоне от 0 до 16383. Для более длинных временных интервалов следует использовать функцию delay() или несколько раз использовать delayMicroseconds().
[slh lang=»php»]
#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 микросекунд
}
[/slh]
Этот пример генерирует меандр с периодом 100 микросекунд и заполнением 50%.