Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

Tombol 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() di startTime dan 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
  }
}
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