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.
Tantangan
SedangBuat 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
}
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