Stoper z przyciskiem
Część sekcji Odmierzanie czasu bez delay() ścieżki Arduino w Coddy. Lekcja 18 z 18.
Stoper ma dwa stany: uruchomiony i zatrzymany, a naciśnięcie przełącza go z jednego na drugi. Mierzy czas w bezpieczny sposób: zapisz wartość millis() na początku, a na końcu ją odejmij.
if (!running) {
running = true;
startTime = millis();
} else {
running = false;
Serial.println(millis() - startTime);
}Przycisk jest eliminowany z drgań styków tak samo jak przycisk trybu: zareaguj, gdy odczyt się zmieni, a następnie odczekaj 20 ms. Oba naciśnięcia wymagają odczekania tych samych 20 ms, więc czas między nimi pozostaje prawidłowy.
LED pokazuje stan: świeci, gdy stoper działa.
Wyzwanie
ŚredniPrzycisk jest już odczytywany i poddawany eliminacji drgań styków, a onPress() uruchamia się raz przy każdym naciśnięciu. Napisz onPress():
- jeśli stoper nie działa: uruchom go, zapisz
millis()wstartTimei zapal LED - jeśli działa: zatrzymaj go, zgaś LED i wypisz czas w milisekundach
Naciśnij Run, naciśnij przycisk dwa razy, a następnie Check.
Spróbuj swoich sił
const int ledPin = 13;
const int buttonPin = 2;
bool wasPressed = false;
bool running = false;
unsigned long startTime = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}
// Wywoływana raz przy każdym naciśnięciu.
void onPress() {
// nie działa: uruchom, zapamiętaj czas, zapal LED
// działa: zatrzymaj, zgaś LED, wypisz czas w ms
}
void loop() {
bool pressed = digitalRead(buttonPin) == LOW;
if (pressed != wasPressed) {
if (pressed) {
onPress();
}
wasPressed = pressed;
delay(20); // poczekaj, aż styki przestaną drgać
}
}
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