Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

Tombol terhubung ke pin 2 (INPUT_PULLUP) dan LED ke pin 13. Buat setiap tekanan tombol mengubah keadaan LED:

  • saat tombol ditekan (LOW sekarang, HIGH sebelumnya), ubah ledOn
  • simpan pembacaan di lastReading di akhir loop()
  • 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
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Input

Latihan sendiri: Playground Arduino