Sakelar tekan atau disebut pushbutton switch adalah sakelar yang akan menghubungkan arus ketika tombolnya ditekan dan dalam keadaan biasa arus listrik tidak mengalir. Pada project kali ini, saya akan menunjukkan bagaimana cara mengendalikan nyala LED hanya dengan menekan sebuah sakelar. Sistem ini saya lihat pada tombol mesin cuci, kira-kira seperti ini sistemnya :

  1. Awalnya tidak yang menyala.
  2. Ketika ditekan di awal, maka LED ke-1 yang menyala.
  3. Ketika ditekan kedua kalinya, maka LED ke-2 yang menyala.
  4. Ketika ditekan ketiga kalinya, maka LED ke-3 yang menyala.
  5. Ketika ditekan lagi, kondisi akan kembali ke kondisi nomor 1.

Bahan yang digunakan :

  1. Arduino UNO R3
  2. Breadboard
  3. LED 3x
  4. Push button switch (sakelar tekan) 1x
  5. Resistor 330 Ohm 1x
  6. Resistor 10 K 1x
  7. Jumper secukupnya

Rangkaian dirangkai dengan mengikuti rangkaian di bawah ini :

Image

Gambar 1. Rangkaian switch LED.

Image

Gambar 2. Pengkabelan rangkaian pada breadboard.

Setelah dirangkai, maka upload kode di bawah ini ke mikrokontrol.

int switchIn = 10;
int pinA = 11;
int pinB = 12;
int pinC = 13;
int counter = 1;
long time = 0;
bool previous = LOW;

void setup() {
pinMode(switchIn, INPUT);
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
}

void loop() {
bool reading = digitalRead(switchIn);
if (reading == LOW && previous == HIGH && millis() - time > 200) {
time = millis();
switch (counter) {
case 0:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
break;
case 1:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
break;
case 2:
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
break;
case 3:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
counter = -1;
break;
}
counter++;
}
previous = reading;
}

Jika telah membaca tulisan saya sebelumnya, di situ telah saya jelaskan beberapa fungsi yang digunakan pada kode C untuk diupload ke mikrokontrol. Kali ini terdapat fungsi yang belum dijelaskan, yaitu fungsi digitalRead(). Fungsi ini digunakan untuk membaca input dari sakelar yang ditekan. Ketika sakelar ditekan, maka nilai return-nya adalah HIGH dan jika sebaliknya, maka nilai return-nya adalah LOW. Pin 10 ditetapkan sebagai input, maka di dalam fungsi setup() dituliskan parameter kedua saat pemanggilan fungsi pinMode() adalah INPUT.

Untuk menerapkan pergantian 4 kondisi saat sakelar ditekan, maka digunakan perintah switch untuk memilih kondisi berdasarkan nilai variabel counter.

  1. Jika nilai counter = 0, maka tidak ada LED yang menyala.
  2. Jika nilai counter = 1, maka LED ke-1 yang menyala.
  3. Jika nilai counter = 2, maka LED ke-2 yang menyala.
  4. Jika nilai counter = 3, maka LED ke-3 yang menyala.

Awalnya nilai counter adalah 1, semua LED dalam keadaan padam. Jadi ketika ditekan pertama kali, LED ke-1 yang akan menyala. Setiap kali sakelar ditekan, nilai counter dinaikkan 1 dan di-reset ulang menjadi -1. Di-reset ulang menjadi -1 karena pada baris selanjutnya nilai counter akan ditambah lagi 1, sehingga menjadi 0. Demikianlah sehingga kondisi ini akan terus berulang selama perangkat dinyalakan.

Perulangan yang dilakukan mikrokontrol ini lumayan kencang, itu tergantung dari nilai clock-nya. Karena kencangnya itu, maka saat pembacaan nilai input saat sakelar ditekan harus diberikan kondisi seperti pada kode. Dengan menggunakan perbandingan nilai input sekarang dan nilai sebelumnya, serta nilai waktu yang sedang berjalan di dalam sistem, maka pembacaann input menjadi normal. Kalau tidak diberikan kondisi seperti itu, maka nyala LED akan berkedip dengan sangat cepat.

Berikut adalah hasil kerjanya.

Image

Rangkaian switch LED bekerja.

Kali ini project yang bisa dibuat sementara ini cuma yang seperti ini, karena tidak ada senjata utama, yaitu solder. Di sini ada aja solder yang dijual, tapi timahnya tidak ada. Sama aja bohong. Jadi, project yang bisa dibuat sementara ini adalah project yang tidak menggunakan solder sama sekali. Nanti kalau sudah punya senjata, bakal lebih banyak lagi project yang lebih rumit. Sekian dan terimakasih. Ikuti terus update project mikrokontroller lab mini kami di halaman introvesia.com/microcontroller.