Artikel sebelumya sama membahas mengenai fungsi coditional statement if-else yang sangat sering digunakan pada pemrograman arduino. Pada artikel kali ini saya akan bahas kelanjutannya yaitu conditional statement switch..case, fungsi ini dari cara kerjanya mirip dengan if-else, namun ada perbedaan yang mendasar dari kontruksi syntax dan penggunaannya, ayo kita bahas.
switch . . case
Statement ini digunakan untuk mengatur alur program dengan cara menentukan blok program yang akan dieksekusi sesuai kondisi yang diinginkan.
Syntax :
switch (var) {
case label1:
//blok program;
break;
case label2:
//blok program;
break;
default:
//blok program
break;
}
Var : nilai variabel yang akan dibandingkan dengan nilai case, tipe data : int, char
label1, label2 : adalah konstanta (constant), tipe data : int, char
Statement switch ini akan membandingkan nilai variabel dengan dengan nilai yang ditulis pada statement case, jika nilainya cocok, blok program yang ada di dalam statement case akan di eksekusi. Statement break berfungsi sebagai perintah untuk mengakhiri setiap case, tanpa break, case yang lain akan terus dieksekusi sampai statement break terbaca.
Sekarang kita langsung coba memuat program sederhana, penggunaan statement switch..case untuk menyalakan led ketika input mencapai nilai tertentu. saya lakukan dengan simulasi pada wokwi, jika ingin mencoba silakan klik disini. Jika menggunakan arduino, siapkan arduino UNO atau nano, potensio, LED dan resistor 220 Ohm, buat rangkaian dibawah ini.

// simulasi statement switch..case-purwarupa3D
// Definisi pin
int InputPin = A1; //pin potensio
int ledMerah = 10; //pin LED merah
int ledBiru = 8; // pin LED Biru
int ledHijau = 9; // pin LED Hijau
//batas nilai potensio
int batasBawah = 350;
int batasTengah = 600;
void setup() {
// Mulai komunikasi serial untuk debugging
Serial.begin(9600);
// Inisialisasi pin LED sebagai output
pinMode(ledMerah, OUTPUT);
pinMode(ledBiru, OUTPUT);
pinMode(ledHijau, OUTPUT);
}
void loop() {
// Baca nilai potensiometer (0-1023)
int inputValue = analogRead(InputPin);
int state = 0; // Variabel untuk menentukan case
// Tentukan state berdasarkan rentang nilai
if (inputValue > 10 && inputValue < batasBawah) {
state = 1;
}
else if (inputValue > 350 && inputValue < batasTengah) {
state = 2;
}
else if (inputValue > batasTengah) {
state = 3;
}
else {
state = 0;
}
// Kontrol LED menggunakan switch-case
switch (state) {
case 3:
digitalWrite(ledMerah, HIGH);
digitalWrite(ledHijau, HIGH);
digitalWrite(ledBiru, HIGH);
break;
case 2:
digitalWrite(ledMerah, HIGH);
digitalWrite(ledHijau, HIGH);
digitalWrite(ledBiru, LOW);
break;
case 1:
digitalWrite(ledMerah, HIGH);
digitalWrite(ledHijau, LOW);
digitalWrite(ledBiru, LOW);
break;
default: // case 0
digitalWrite(ledMerah, LOW);
digitalWrite(ledHijau, LOW);
digitalWrite(ledBiru, LOW);
break;
}
// Tampilkan nilai potensiometer dan state di Serial Monitor
Serial.print("Potensiometer: ");
Serial.print(inputValue);
Serial.print(" | State: ");
Serial.println(state);
delay(100); // Stabilisasi pembacaan
}
Jalankan program dan coba putar-putar knob potensio sambil perhatikan serial monitor, pada program, saya menggunakan statement switch..case untuk mengatur suatu aksi berdasarkan kondisi, jika nilai potensio antara 10 sampai 350 maka LED merah akan menyala. jika potensio antara 360 sampai 600 maka LED merah dan hijau akan menyala, jika nilai potensio lebih dari 600, semua LED akan menyala.
Dari contoh program diatas kita bisa melihat perbedaan penggunaan antara switch..case dan if-else. berikut beberapa perbedaannya :
- Struktur dasar
if-else menilai langsung sebuah kondisi yang ditetapkan, apakah bernilai TRUE/FALSE sedangkan switch..case mengecek suatu variabel mana yang memenuhi syarat (bernilai TRUE) kemudian mengeksekusi program yang kita inginkan ketika kondisinya terpenuhi. Oleh karena itu dalam program diatas statement switch..case tidak menilai kondisi tapi hanya melihat variabel mana yang bernilai TRUE.
- Penanganan rentang nilai
Statement if-else bisa menangani kondisi yang membutuhkan rentang nilai (misal: n > 500 && N < 1000). Sedangkan switch..case karena tidak bisa menilai langsung kondisi maka dia perlu statement lain untuk menghasilkan nilai variabel yang bisa dibaca oleh statement switch..case. Dalam program diatas, Statement if-else digunakan untuk mengubah kondisi yang membutuhkan rentang nilai menjadi sebuah variabel yang nilainya dibaca oleh statement switch..case.
- Kecepatan proses pembacaan.
Statement if-else membaca blok program satu per satu sampai menemukan kondisi yang benilai TRUE sedangkan switch..case hanya memeriksa sekali variabel mana yang nilai nya TRUE kemudian langsung mengekseskusi program. dari segi kecepatan proses pembacaan switch case lebih cepat dari if-else apalagi untuk program yang algoritma nya memiliki banyak kondisi.
Your post is eye-opening and stimulating. Thanks for sharing your original perspective on this topic.
Hkyh GAi GPUwsIdm SZcJHtB
Your prose creates striking pictures in my mind. I can clearly picture every element you describe.
akH USty hpEJw rmA LvVXG