Dua LED, Dua Kecepatan
Termasuk bagian Pengaturan Waktu Tanpa Delay dalam perjalanan Arduino di Coddy. Pelajaran 4 dari 18.
Dengan delay(), membuat dua LED berkedip dengan kecepatan berbeda menjadi teka-teki: setiap jeda membuat LED yang lain menunggu. Dengan millis(), semuanya mudah karena tidak ada yang menunggu.
Beri setiap tugas variabelnya sendiri: waktu terakhirnya sendiri dan statusnya sendiri. Lalu beri setiap tugas if sendiri di dalam loop(). Pada setiap perulangan, setiap tugas memeriksa jamnya sendiri dan bertindak hanya saat waktunya tiba:
unsigned long redPrevious = 0;
unsigned long greenPrevious = 0;
void loop() {
unsigned long now = millis();
if (now - redPrevious >= 500) {
redPrevious = now;
// ubah keadaan LED merah
}
if (now - greenPrevious >= 200) {
greenPrevious = now;
// ubah keadaan LED hijau
}
}Kedua tugas tidak pernah saling mengganggu. Kamu bisa menambahkan tugas ketiga dan keempat dengan cara yang sama: satu set variabel dan satu if untuk setiap tugas.
Jangan pernah menggunakan satu variabel waktu terakhir bersama untuk dua tugas. Tugas yang lebih cepat meresetnya begitu sering sehingga tugas yang lebih lambat tidak pernah mencapai intervalnya.
Tantangan
MudahLED merah pada pin 13 sudah berganti setiap 500 ms. Buat LED hijau pada pin 12 berganti setiap 200 ms pada saat yang sama:
- tambahkan variabel
greenPreviousdangreenState - tambahkan
ifkedua diloop()untuk LED hijau
Tekan Run dan lihat keduanya berkedip, lalu tekan Check.
Coba sendiri
const int redLed = 13;
const int greenLed = 12;
unsigned long redPrevious = 0;
int redState = LOW;
// tambahkan dua variabel untuk LED hijau di sini
void setup() {
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
}
void loop() {
unsigned long now = millis();
// LED merah berganti keadaan setiap 500 ms
if (now - redPrevious >= 500) {
redPrevious = now;
if (redState == LOW) {
redState = HIGH;
} else {
redState = LOW;
}
digitalWrite(redLed, redState);
}
// buat LED hijau berganti keadaan setiap 200 ms di sini
}
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