Menu
CoddyTech

LED Berkedip Saat Tombol Mengubah Status

Termasuk bagian Pengaturan Waktu Tanpa Delay dalam perjalanan Arduino di Coddy. Pelajaran 5 dari 18.

Sketsa yang tidak pernah menunggu dapat memantau tombol dan menjalankan kedipan secara bersamaan. Setiap perulangan memerlukan beberapa mikrodetik, jadi board memeriksa tombol ribuan kali per detik dan mendeteksi bahkan ketukan yang sangat singkat.

Kedipan menggunakan pola millis(). Tombol menggunakan pemeriksaan tepi dari bagian Input: bertindak saat tombol ditekan sekarang dan tidak ditekan pada perulangan sebelumnya. ! berarti "tidak", jadi !wasPressed dibaca "tidak ditekan".

bool wasPressed = false;

void loop() {
  // kedipan: if (now - previous >= 500) { ... }

  bool pressed = digitalRead(buttonPin) == LOW;
  if (pressed && !wasPressed) {
    // tombol baru saja ditekan
  }
  wasPressed = pressed;
}

Letakkan kedua bagian di dalam loop(), satu setelah yang lain, dan jangan gunakan delay() di keduanya. Jika kedipan menunggu 500 ms, ketukan yang dimulai dan berakhir selama waktu tunggu tidak akan terdeteksi.

challenge icon

Tantangan

Sedang

Buat board melakukan dua hal sekaligus:

  • LED merah pada pin 13 berganti setiap 500 ms, diatur waktunya dengan millis()
  • setiap kali tombol ditekan, LED kuning pada pin 12 berganti status: menyala, lalu mati, lalu menyala

Ketukan singkat harus berfungsi kapan saja, dan menahan tombol hanya akan mengganti status LED kuning satu kali. Tekan Jalankan, ketuk tombol, lalu tekan Periksa.

Coba sendiri

const int redLed = 13;
const int yellowLed = 12;
const int buttonPin = 2;

void setup() {
  pinMode(redLed, OUTPUT);
  pinMode(yellowLed, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  // 1. nyalakan atau matikan LED merah setiap 500 ms menggunakan millis()

  // 2. setiap kali tombol ditekan, nyalakan atau matikan LED kuning
}
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