Menu
CoddyTech

Mengukur dengan micros()

Termasuk bagian Pengaturan Waktu Tanpa Delay dalam perjalanan Arduino di Coddy. Pelajaran 16 dari 18.

millis() menghitung milidetik penuh, yang terlalu kasar untuk durasi singkat: tekan selama 2.5 ms akan terbaca sebagai 2 atau 3. micros() adalah jenis jam yang sama, tetapi menghitung mikrodetik, sepersejuta detik: ada 1000 mikrodetik dalam setiap milidetik.

Di Uno, nilainya naik dalam langkah 4 mikrodetik, dan fungsi ini juga mengembalikan unsigned long. Untuk mengukur durasi, baca nilainya sebelum dan sesudah, lalu kurangkan:

unsigned long start = micros();
int reading = analogRead(A0);
unsigned long took = micros() - start;
Serial.println(took);   // sekitar 110: analogRead() memerlukan sekitar 0.1 ms

Karena menghitung begitu cepat, micros() kehabisan angka jauh lebih cepat daripada millis(): setelah sekitar 70 menit, hitungannya dimulai lagi dari 0. Gunakan untuk durasi singkat, dan gunakan millis() untuk durasi yang lebih dari beberapa menit.

challenge icon

Tantangan

Mudah

Ukur berapa lama tombol ditekan, dalam mikrodetik:

  • saat tombol ditekan, simpan micros() di pressedAt
  • saat tombol dilepas, cetak micros() - pressedAt

Tekan Jalankan, ketuk tombol, lalu Periksa.

Coba sendiri

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) {
    // tombol baru saja ditekan: catat waktunya
  }

  if (!pressed && wasPressed) {
    // tombol baru saja dilepas: cetak berapa lama tombol ditekan, dalam mikrodetik
  }

  wasPressed = pressed;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pengaturan Waktu Tanpa Delay

Latihan sendiri: Playground Arduino