Stopwatch Tombol
Termasuk bagian Pengaturan Waktu Tanpa Delay dalam perjalanan Arduino di Coddy. Pelajaran 18 dari 18.
Stopwatch memiliki dua keadaan, berjalan dan berhenti, dan satu kali tekan mengubahnya dari satu keadaan ke keadaan lainnya. Stopwatch mengukur waktu dengan cara yang aman: simpan millis() di awal, lalu kurangi di akhir.
if (!running) {
running = true;
startTime = millis();
} else {
running = false;
Serial.println(millis() - startTime);
}Tombol menjalani debouncing seperti tombol mode: lakukan tindakan saat pembacaan berubah, lalu tunggu 20 ms. Kedua kali tekan sama-sama menunggu 20 ms, jadi jeda waktu di antaranya tetap akurat.
LED menunjukkan keadaan: menyala saat stopwatch berjalan.
Tantangan
SedangTombol sudah dibaca dan pantulan tombol sudah ditangani, dan onPress() dijalankan sekali untuk setiap tekanan. Tulis onPress():
- jika stopwatch tidak sedang berjalan: mulai stopwatch, simpan
millis()distartTimedan nyalakan LED - jika stopwatch sedang berjalan: hentikan stopwatch, matikan LED dan cetak waktu dalam milidetik
Tekan Jalankan, tekan tombol dua kali, lalu tekan Periksa.
Coba sendiri
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);
}
// Dipanggil sekali setiap kali tombol ditekan.
void onPress() {
// tidak berjalan: mulai, simpan waktunya, nyalakan LED
// berjalan: berhenti, matikan LED, tampilkan waktu dalam ms
}
void loop() {
bool pressed = digitalRead(buttonPin) == LOW;
if (pressed != wasPressed) {
if (pressed) {
onPress();
}
wasPressed = pressed;
delay(20); // tunggu hingga kontak stabil
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pengaturan Waktu Tanpa Delay
1millis()
Jam millis()Waktu dalam unsigned longLED Berkedip Tanpa JedaDua LED, Dua KecepatanLED Berkedip Saat Tombol Mengubah StatusLampu dengan Pengatur Waktu4Pengaturan Waktu yang Presisi
Mengukur dengan micros()Saat millis() Berputar KembaliStopwatch TombolLatihan sendiri: Playground Arduino