Функция 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);
}