Arduino

и не только...

Instagram TikTok VK

Работа со временем

Функция millis()

Описание

Возвращает время в миллисекундах, прошедшее с начала выполнения программы на плате Arduino. Это число будет переполнено и сброситься до 0 примерно через 50 дней выполнения.

Синтаксис

millis()

Параметры

нет

Возвращаемое значение

Количество миллисекунд, прошедших с момента запуска программы

Пример

Выводим значение, возвращаемое функцией millis() и ждем 1 секунду:

unsigned long mTime;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  mTime = millis();
  Serial.println(mTime);
  delay(1000);
}

Функция micros()

Описание

Возвращает время в микросекундах, прошедшее с начала выполнения программы на плате Arduino. Это число будет переполнено и сброситься до 0 примерно через 70 минут выполнения.

Синтаксис

micros()

Параметры

нет

Возвращаемое значение

Количество микросекунд, прошедших с момента запуска программы

Пример

Выводим значение, возвращаемое функцией micros() и ждем 1 секунду:

unsigned long mTime;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  mTime = micros();
  Serial.println(mTime);
  delay(1000);
}
Примечания

На платах Arduino 16 МГц (например Uno и Nano) эта функция имеет разрешение в четыре микросекунды, поэтому значение всегда кратно четырем. На платах Arduino 8 МГц (например, LilyPad) эта функция имеет разрешение восемь микросекунд.

Функция delay()

Описание

Приостанавливает выполнение программы на заданноое время в миллисекундах.

Синтаксис

delay(ms)

Параметры

ms - время в миллисекундах, на которое нужно приостановить программу

Возвращаемое значение

нет

Пример

Мигаем встроенным светодиодом:

int ledPin = 13;

void setup() 
{
  pinMode(ledPin, OUTPUT);
}

void loop() 
{
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}
Примечания

Несмотря на то, что с помощью функции delay() легко создать мигающий светодиод и многие другие простые скетчи, использование функции имеет существенные недостатки. Во время приостановки программы невозможны любые манипуляции с пинами, например опрос датчиков. Также не будут работать многие математические функции. Поэтому рекомендуется в качестве альтернативы использовать функцию millis().

Однако некоторые функции во вовремя выполнение delay() все же продолжают работать. Например, прерывания.

Функция delayMicroseconds()

Описание

Приостанавливает выполнение программы на заданное время в микросекундах.

Синтаксис

delayMicroseconds(us)

Параметры

us - время в микросекундах, на которое нужно приостановить программу

Возвращаемое значение

нет

Пример

Посылаем последовательность импульсов с периодом раз в 100 микросекунд:

int outPin = 8;

void setup() 
{
  pinMode(outPin, OUTPUT);
}

void loop() 
{
  digitalWrite(outPin, HIGH);
  delayMicroseconds(50);
  digitalWrite(outPin, LOW);
  delayMicroseconds(50);
}