Menu
CoddyTech

micros() ile Ölçüm

Coddy'nin Arduino Journey'sinin delay() Kullanmadan Zamanlama bölümünün bir parçası. Ders 16 / 18.

millis() tam milisaniyeleri sayar; bu, kısa süreler için fazla kaba bir ölçümdür: 2.5 ms süren bir basış 2 ya da 3 olarak okunur. micros() aynı türden bir saattir, ancak saniyenin milyonda biri olan mikrosaniyeleri sayar: her milisaniyede 1000 mikrosaniye vardır.

Uno'da 4 mikrosaniyelik adımlarla artar ve o da bir unsigned long döndürür. Bir şeyi zamanlamak için önce ve sonra değerini okuyup çıkarın:

unsigned long start = micros();
int reading = analogRead(A0);
unsigned long took = micros() - start;
Serial.println(took);   // yaklaşık 110: analogRead() yaklaşık 0.1 ms sürer

Çok hızlı saydığı için micros(), sayılarını millis()'ten çok daha önce tüketir: yaklaşık 70 dakika sonra 0'dan yeniden başlar. Kısa süreler için bunu, birkaç dakikadan uzun süreler içinse millis()'i kullanın.

challenge icon

Görev

Kolay

Düğmeye ne kadar süreyle basılı tutulduğunu mikrosaniye cinsinden ölçün:

  • düğmeye basıldığında, micros() değerini pressedAt değişkenine kaydedin
  • düğme bırakıldığında, micros() - pressedAt değerini yazdırın

Run düğmesine basın, düğmeye dokunun, ardından Check düğmesine basın.

Kendin dene

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) {
    // düğmeye az önce basıldı: zamanı kaydet
  }

  if (!pressed && wasPressed) {
    // düğme az önce bırakıldı: ne kadar süre basılı tutulduğunu mikrosaniye cinsinden yazdır
  }

  wasPressed = pressed;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

delay() Kullanmadan Zamanlama bölümündeki tüm dersler

Kendi başına pratik yap: Arduino playground