Lampu dengan Pengatur Waktu
Termasuk bagian Pengaturan Waktu Tanpa Delay dalam perjalanan Arduino di Coddy. Pelajaran 6 dari 18.
Lampu tangga menyala saat kamu menekan tombolnya, lalu mati sendiri beberapa saat kemudian. Tekan lagi saat lampu menyala, dan waktunya mulai dihitung ulang.
Ini membutuhkan dua hal: waktu penekanan terakhir dan apakah lampu menyala. Simpan waktunya dalam unsigned long saat tombol ditekan:
if (digitalRead(buttonPin) == LOW) {
pressedAt = millis(); // mulai (atau mulai lagi) menghitung waktu
lightOn = true;
digitalWrite(ledPin, HIGH);
}Lalu, pada setiap perulangan, periksa berapa lama waktu telah berlalu:
if (lightOn && millis() - pressedAt >= onTime) {
lightOn = false;
digitalWrite(ledPin, LOW);
}Kedua bagian ini tidak pernah menunggu, jadi penekanan tombol dapat terdeteksi kapan saja, bahkan saat lampu sudah menyala. Jika kamu menggunakan delay(2000) setelah menekan tombol, penekanan kedua selama waktu tunggu akan terlewat.
Tantangan
MudahBuat lampu tangga:
- satu kali menekan tombol langsung menyalakan LED pada pin 13
- 2 detik setelah tombol ditekan, lampu mati dengan sendirinya
- menekan tombol saat lampu menyala akan memulai ulang hitungan 2 detik
Tekan Jalankan, tekan tombol beberapa kali, lalu Periksa.
Coba sendiri
const int ledPin = 13;
const int buttonPin = 2;
const unsigned long onTime = 2000; // berapa lama lampu tetap menyala
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
// saat tombol ditekan: nyalakan LED dan catat waktunya
// saat durasi onTime telah berlalu sejak itu: matikan LED
}
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