Pomiar za pomocą micros()
Część sekcji Odmierzanie czasu bez delay() ścieżki Arduino w Coddy. Lekcja 16 z 18.
millis() zlicza pełne milisekundy, co jest zbyt małą dokładnością przy krótkich zdarzeniach: naciśnięcie trwające 2.5 ms zostałoby odczytane jako 2 lub 3. micros() to ten sam rodzaj zegara, ale zlicza mikrosekundy, czyli milionowe części sekundy: 1000 mikrosekund przypada na każdą milisekundę.
Na Uno wartość rośnie skokowo co 4 mikrosekundy, a funkcja również zwraca wartość typu unsigned long. Aby zmierzyć czas, odczytaj wartość przed i po, a następnie odejmij:
unsigned long start = micros();
int reading = analogRead(A0);
unsigned long took = micros() - start;
Serial.println(took); // około 110: analogRead() trwa około 0.1 msPonieważ zlicza tak szybko, micros() wyczerpuje liczby znacznie szybciej niż millis(): po około 70 minutach zaczyna od nowa od 0. Używaj go do krótkich pomiarów czasu, a millis() do wszystkiego, co trwa dłużej niż kilka minut.
Wyzwanie
ŁatwyZmierz, jak długo przycisk jest wciśnięty, w mikrosekundach:
- gdy przycisk zostanie wciśnięty, zapisz
micros()wpressedAt - gdy zostanie zwolniony, wypisz
micros() - pressedAt
Naciśnij Run, stuknij przycisk, a następnie naciśnij Check.
Spróbuj swoich sił
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) {
// przycisk został właśnie wciśnięty: zapamiętaj czas
}
if (!pressed && wasPressed) {
// przycisk został właśnie zwolniony: wypisz, jak długo był przytrzymywany, w mikrosekundach
}
wasPressed = pressed;
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Odmierzanie czasu bez delay()
1millis()
Zegar millis()Czas w typie unsigned longMiganie bez opóźnieniaDwie diody LED, dwa tempaMiganie podczas przełączania przyciskiemŚwiatło na czas4Precyzyjne odmierzanie czasu
Pomiar za pomocą micros()Gdy licznik millis() się przepełniaStoper z przyciskiemPoćwicz samodzielnie: Edytor online Arduino