Fungsi switch. .case Pada Pemrograman Arduino

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 disiniJika 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.

4 pemikiran pada “Fungsi switch. .case Pada Pemrograman Arduino”

Tinggalkan komentar