Berikut penjelasan setiap bagian program agar mudah dipahami oleh siswa.
1. Mendeklarasikan Pin dan Variabel
const int ledPin = 13;
const int buttonPin = 2;
bool ledState = LOW;
bool lastButtonState = LOW;
bool buttonState;
Penjelasan:
const int ledPin = 13;Menentukan bahwa LED berada pada pin 13.
constberarti nilainya tetap dan tidak dapat diubah.
const int buttonPin = 2;Menentukan bahwa push button terhubung ke pin 2.
bool ledState = LOW;Menyimpan kondisi LED.
LOW= mati.HIGH= menyala.
bool lastButtonState = LOW;Menyimpan keadaan tombol sebelumnya.
Digunakan agar satu kali tekan hanya dihitung sekali.
bool buttonState;Menyimpan keadaan tombol saat ini.
2. Fungsi setup()
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
Penjelasan:
Fungsi setup() hanya dijalankan sekali saat Arduino pertama kali dinyalakan.
pinMode(ledPin, OUTPUT);Mengatur pin 13 sebagai keluaran (Output) untuk mengendalikan LED.
pinMode(buttonPin, INPUT);Mengatur pin 2 sebagai masukan (Input) untuk membaca tombol.
3. Fungsi loop()
void loop() {
Fungsi loop() akan dijalankan terus-menerus selama Arduino hidup.
4. Membaca Tombol
buttonState = digitalRead(buttonPin);
Penjelasan:
digitalRead()membaca kondisi pin 2.Jika tombol ditekan → bernilai HIGH.
Jika tombol dilepas → bernilai LOW.
Nilai tersebut disimpan pada variabel buttonState.
5. Mendeteksi Tekanan Tombol
if (buttonState == HIGH && lastButtonState == LOW) {
Artinya:
Tombol sekarang ditekan (HIGH).
Sebelumnya belum ditekan (LOW).
Dengan cara ini, Arduino hanya merespons saat awal tombol ditekan, bukan selama tombol masih ditahan.
6. Mengubah Kondisi LED
ledState = !ledState;
Tanda ! berarti kebalikan.
Misalnya:
Sebelumnya
LOW→ berubah menjadiHIGH.Sebelumnya
HIGH→ berubah menjadiLOW.
Jadi setiap tombol ditekan, LED berganti kondisi.
7. Menyalakan atau Mematikan LED
digitalWrite(ledPin, ledState);
Perintah ini mengirimkan nilai ledState ke pin 13.
Jika
ledState = HIGH, LED menyala.Jika
ledState = LOW, LED mati.
8. Debounce
delay(50);
Saat tombol ditekan, kontak mekanis sering bergetar (bouncing) sehingga Arduino bisa menganggap satu kali tekan sebagai beberapa kali tekan.
delay(50) memberi jeda 50 milidetik agar pembacaan tombol menjadi stabil.
9. Menyimpan Kondisi Tombol
lastButtonState = buttonState;
Nilai tombol saat ini disimpan sebagai kondisi sebelumnya.
Pada putaran loop() berikutnya, Arduino dapat membandingkan apakah tombol baru saja ditekan atau tidak.
Alur Program
Arduino hidup
│
▼
Setup dijalankan
│
▼
Loop mulai
│
▼
Baca tombol
│
▼
Apakah tombol baru ditekan?
│
Ya ───── Tidak
│ │
▼ │
Ubah status LED
│
▼
Tampilkan ke pin 13
│
▼
Simpan kondisi tombol
│
▼
Kembali ke awal loop
Intinya: setiap kali push button ditekan satu kali, LED pada pin 13 akan berganti kondisi:
Tekan pertama → LED menyala.
Tekan kedua → LED mati.
Tekan ketiga → LED menyala lagi.
Dan seterusnya. Program ini mengajarkan konsep input digital, output digital, variabel, percabangan (
if), dan logika Boolean pada Arduino.
Tidak ada komentar:
Posting Komentar