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%.

редактор

Добавить комментарий

Ваш электронный адрес не будет опубликован.

*