Arduino Switch Case Kullanımı

Bu içeriğimizde Arduino Switch Case kullanımına göz atıyoruz. Switch case aslında kontrol seçim mekanizması olarak adlandırabiliriz. Uzun uzun if, else elseif komutlarını kullanmaktansa switch case mantığını kullanarak projelerimizin kod kısımlarında oldukça önemli geliştirmeler yapabiliriz.

If-else-if mi Switch Case mi Daha Verimlidir?

Yapılan testlere göre, aynı işleve sahip kodlar hem if-else-if blokları ile hem de switch case mekanizması ile gerçekleştirilmiştir.

Bu test, ayrı bir dizi değerden bir eşleşme seçmek için kullanıldığında, switch ifadesinin yürütme süresini ve if-else-if merdiven kod yapısını karşılaştırmak için tasarlanmıştır. if-else-if merdiveni, test tarafından kullanılandan çok daha fazla esneklik sağlar, ancak geçiş için eşleştirme işlevselliği sağlamak için kullanıldığında bunun dikkate alınması gerekmez.

Testin İşlevselliği

İki ifade için hız testinin her iki durumda da tam olarak aynı işlevselliği sağlaması önemliydi. Her test için sıfır ile on dokuz arasında bir tamsayı değeri üretildi. Bu tamsayı değeri daha sonra if komutları ve vaka ifadeleri kullanılarak on dokuz olası seçimle karşılaştırıldı. Oluşturulan tamsayı değeri on dokuz olduğunda, bu eşleşmedi ve bunun yerine son else ifadesi veya switch komutunun varsayılan durumu kullanılarak işlendi.

Birçok programlama durumunda, bu tür bir seçimin bir eşleşme oluşturması çok olasıdır. Ancak, eksiksizlik için ikinci bir test yapıldı. Bu test aynı işlevi izledi ancak olası değerlerin hiçbiriyle eşleşmeyen bir tamsayı değeri kullandı; bu nedenle her zaman son else ifadesini veya switch komutunun varsayılan durumunu kullandı.

Testin devamı ve detaylı bilgiler için bu kaynağa göz atabilirsiniz.

Arduino Switch Case Kullanımı arduino switch case kullanımı,arduino switch case komutu,arduino switch case nedir,arduino switch case nasıl kullanılır,if else mi hızlı switch case mi

Sonuçlar, switch ifadesinin if-else-if merdiveninden daha hızlı yürütüldüğünü göstermektedir. Bunun nedeni, derleyicinin switch ifadesini optimize etme yeteneğidir. if-else-if merdiveni durumunda, kod, programcı tarafından belirlenen sırayla her if ifadesini işlemelidir.

Arduino Switch Case Kullanımı

Bir if ifadesi, DOĞRU veya YANLIŞ olmak üzere iki farklı seçenek arasından seçim yapmanızı sağlar. İkiden fazla seçenek olduğunda, birden çok if ifadesi kullanabilir veya switch ifadesini kullanabilirsiniz. Switch, birkaç farklı seçenek arasından seçim yapmanızı sağlar. Bu öğretici, bir foto direncin(LDR) istenen dört durumu arasında geçiş yapmak için nasıl kullanılacağını gösterir: gerçekten karanlık, loş, orta ve aydınlık.

Bu program önce foto direnci okur. Ardından çıktısını dört değerden birine eşlemek için map() işlevini kullanır: 0, 1, 2 veya 3. Son olarak, gelen verinin hangisine bağlı olarak dört mesajdan birini bilgisayara geri yazdırmak için switch() kalıbı kullanır. dört değer döndürülür.

Gerekli Malzemeler

  • Arduino Geliştirme Kartı
  • Foto direnç (LDR)
  • 10Ω direnç
  • Jumper/Kablolar
  • Breadboard (Geliştirme Kartı)

Devre Şeması

Fotodirenç, bir voltaj bölücü devre kullanılarak pin 0’a bağlanır. 10K ohm’luk bir direnç, voltaj bölücünün diğer tarafını oluşturur ve Analog’dan 0’dan ground’a kadar çalışır. analogRead() işlevi, makul şekilde aydınlatılmış bir kapalı alanda bu devreden yaklaşık 0 ila 600 aralığı döndürür.

Arduino Switch Case Kullanımı arduino switch case kullanımı,arduino switch case komutu,arduino switch case nedir,arduino switch case nasıl kullanılır,if else mi hızlı switch case mi
Arduino Switch Case Kullanımı Devre Şeması

Arduino Kodu

// test yaptığınız alana göre bu veriler değişecektir.
const int sensorMin = 0;   
const int sensorMax = 600;  

void setup() {
  Serial.begin(9600);
}

void loop() {
  // sensörden veriyi oku:
  int sensorReading = analogRead(A0);
  // sensör aralığını dört seçenek aralığıyla eşler:
  int range = map(sensorReading, sensorMin, sensorMax, 0, 3);

  // aralık değerine bağlı olarak farklı bir yeri çalıştırır:
  switch (range) {
    case 0:    
      Serial.println("karanlik ortam");
      break;
    case 1:     
      Serial.println("los ortam");
      break;
    case 2:    
      Serial.println("orta aydinlik ortam");
      break;
    case 3:    
      Serial.println("aydinlik ortam");
      break;
  }
  delay(1);  
}