Ubah Status Setiap Kali Tombol Ditekan
Termasuk bagian Input dalam perjalanan Arduino di Coddy. Pelajaran 4 dari 22.
Sejauh ini, LED meniru tombol: menyala saat ditekan, mati saat dilepas. Sakelar lampu bekerja dengan cara berbeda: tekan sekali untuk menyalakan, tekan lagi untuk mematikan. Itu disebut toggle.
Untuk melakukan toggle, sketch harus mengetahui saat tombol mulai ditekan: sekarang ditekan, tetapi sebelumnya tidak ditekan saat loop() terakhir dijalankan. Saat itu disebut edge. Simpan pembacaan terakhir dalam variabel di atas setup(), seperti penghitung:
int lastReading = HIGH;
void loop() {
int reading = digitalRead(2);
if (reading == LOW && lastReading == HIGH) {
// tombol telah ditekan
}
lastReading = reading;
}Menahan tombol membuat pembacaannya tetap LOW, jadi edge terjadi sekali setiap kali tombol ditekan, selama apa pun kamu menahannya.
Untuk membalik nilai bool, gunakan !, yang berarti "tidak": ledOn = !ledOn; mengubah true menjadi false, dan sebaliknya.
Tantangan
SedangTombol terhubung ke pin 2 (INPUT_PULLUP) dan LED ke pin 13. Buat setiap tekanan tombol mengubah keadaan LED:
- saat tombol ditekan (
LOWsekarang,HIGHsebelumnya), ubahledOn - simpan pembacaan di
lastReadingdi akhirloop() - nyalakan atau matikan LED agar sesuai dengan
ledOn
Tekan Jalankan, tekan tombol beberapa kali, lalu tekan Periksa.
Coba sendiri
const int buttonPin = 2;
const int ledPin = 13;
bool ledOn = false;
int lastReading = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
int reading = digitalRead(buttonPin);
// balikkan nilai ledOn saat tombol ditekan
// simpan pembacaan ini untuk perulangan berikutnya
// nyalakan atau matikan LED agar sesuai dengan ledOn
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Input
1Tombol
Tampilkan Status TombolResistor Pull-DownPull-Up InternalUbah Status Setiap Kali Tombol DitekanHitung Tekanan TombolAtasi Pantulan TombolDua Tombol SekaligusLatihan sendiri: Playground Arduino