Измерение с помощью micros()
Часть раздела Отсчёт времени без delay путешествия по Arduino на Coddy. Урок 16 из 18.
millis() считает целые миллисекунды, что слишком грубо для коротких событий: нажатие длительностью 2.5 мс будет показано как 2 или 3. micros() — это такие же часы, но они считают микросекунды, миллионные доли секунды: по 1000 микросекунд в каждой миллисекунде.
На Uno значение увеличивается с шагом в 4 микросекунды, и функция тоже возвращает unsigned long. Чтобы засечь время, считай его до и после, а затем вычти:
unsigned long start = micros();
int reading = analogRead(A0);
unsigned long took = micros() - start;
Serial.println(took); // около 110: вызов analogRead() занимает около 0.1 msПоскольку micros() считает так быстро, значения у неё заканчиваются гораздо раньше, чем у millis(): примерно через 70 минут отсчёт начинается снова с 0. Используй её для коротких промежутков времени, а millis() — для промежутков длительностью больше нескольких минут.
Задание
ЛегкоИзмерьте, как долго удерживается кнопка, в микросекундах:
- когда кнопка нажимается, сохраните
micros()вpressedAt - когда кнопка отпускается, выведите
micros() - pressedAt
Нажмите Run, коснитесь кнопки, затем нажмите Check.
Попробуйте сами
const int buttonPin = 2;
bool wasPressed = false;
unsigned long pressedAt = 0;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
bool pressed = digitalRead(buttonPin) == LOW;
if (pressed && !wasPressed) {
// кнопку только что нажали: запомни время
}
if (!pressed && wasPressed) {
// кнопку только что отпустили: выведи, сколько времени её удерживали, в микросекундах
}
wasPressed = pressed;
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Отсчёт времени без delay
1millis()
Часы на millis()Время в unsigned longМигание без задержкиДва светодиода, две скоростиМигание и переключение кнопкойСвет по таймеру4Точное измерение времени
Измерение с помощью micros()Когда millis() переполняетсяСекундомер с кнопкойПотренируйтесь самостоятельно: Песочница Arduino