Arduino Tarifleri #14 – Switch Case Yapısı

517
18 Ağustos 2015 Ömer Faruk Uçar tarafından

Arkadaşlar merhaba, 14. bölüme hoş geldiniz 🙂

Biliyorum hep aynısını diyorsun diyeceksiniz ama bu bölümde önemli bir konu olan ve kullanımı ile çok güzel işlere olanak sağlayan bir kodu “switch case” yapısını öğreneceğiz ve bu video gerçekten şu ana kadar çekilen Arduino tariflerinden belkide en etkili olanı olacak arkadaşlar 🙂

Neden etkili olacak peki bu video? Çünkü bu videoda “switch case” yapısını öğrenebilmek için, onu anlayabilmek için, ona input ( giriş ) verebilmek için yazacağımız yardımcı algoritma şu vakte kadar Arduino Tarifleri’ndeki nerede ise 13 videoda anlatılan her şeyi kullanmamızı gerektirecek. Eğer yazılan kodu iyi anlayabilir ve kendiniz yazmayı denediğinizde sıkıntı yaşamazsınız bilin ki şu vakte kadar hakkıyla gelmişsiniz 🙂 Eğer sıkıntı varsa yine sevinin. Çünkü bu video sayesinde sıkıntılı olduğunuz kısmı görmüş olacaksınız ve onun üzerine düşebileceksiniz. Bu video bu manada çok zengin oldu arkadaşlar 🙂

Birazda kodun kendisinden bahsedecek olursak, aslında video kullanımı açısından gayet iyi ve yeterli bu aşamada. Fakat kendisinin bir seçilim kodu olduğundan bahsedebiliriz. İf-else ilişkisi ile yazılabilecek seçilim ifadelerini daha rahat yazmanızı sağlıyor. Bu demek değil ki if-else kodu ile yapılacak her şeyi yapar. if-else kodunu bildiğimiz için onun üzerinden bir örnek vereyim dedim 🙂 Neyse nasıl olsa ileride kendisi kullanılacak ve daha iyi anlaşılacak. İyi seyirler dilerim, hoşça kalın, iyi çalışmalar 🙂

Not: Devre şeması çizilmiş olduğu için üzerinde oynama yapmak şimdi uğraştıracak arkadaşlar 🙂 🙂 üşengeçlik değil aslında ama bir şey öğrenebiliriz bundan da. Aşağıdaki devrede switchin bağlı olduğu mavi renkli gnd kablosuna ihtiyaç yok aslında zaten sağda iken anahtar, en sağdaki bacaktan 5v alır, solda iken ortadan gnd alır.

Videoda Kullanılan Devre Şeması:
14-2

Videoda Kullanılan Kod:

 

const int arttir = 3; // artirma isini yapan buton 3. pine bağlı
const int azalt  = 4; // azatlma isini yapan buton 4. pine bağlı

const int dongu  = 2; // donguyu ayarlaya swtich 2. pine bağlı

int durum_arttir; // değişken tanımlandı
int durum_azalt ;// değişken tanımlandı
int durum_dongu ;// değişken tanımlandı

int sayac = 0;// değişken tanımlandı ilk değeri 0 verildi

void setup()
{
  pinMode(arttir , INPUT); // arttir butonu giriş pini olarak ayarlandı.
  pinMode(azalt  , INPUT); // arttir butonu giriş pini olarak ayarlandı.
  pinMode(dongu  , INPUT); // arttir butonu giriş pini olarak ayarlandı.

  Serial.begin(9600); // seri haberleşme başladı

}
void loop()
{
  durum_dongu = digitalRead(dongu); // dongu switchini oku durumu durum_dongu ye kaydet
  while (durum_dongu == HIGH) // dongu Hıgh ise while döngüsüne gir
  {
    durum_arttir = digitalRead(arttir); // arttir butonunu oku durumunu durum_arttira kaydet
    durum_azalt  = digitalRead(azalt ); // azalt butonunu oku durumunu durum_azalta kaydet

    if (durum_arttir == HIGH) // eğer durum arttır hıgh ise çalış
    {
      sayac++; // sayacı arttır
      Serial.println("sayac = " ); // ekrana sayac kelimesini yaz
      Serial.println(sayac); // ekrana sayacın değerini yaz
      delay(200); // 200ms bekle
    }
    else if ( durum_azalt == HIGH)
    {
      sayac--; // sayacı azalt
      Serial.println("sayac = " ); // ekrana sayac kelimesini yaz
      Serial.println(sayac); // ekrana sayacın değerini yaz
      delay(200); // 200 ms bekle
    }
    durum_dongu = digitalRead(dongu); // dongu switcini tekrar oku (aksi halde while döngüsü sonsuz döngü olur(
  }
  switch (sayac) // sayaca göre switch kodunu çalıştır
  {
    case 1: // sayaca 1 ise
      Serial.println(" 1. motor calisiyor "); // ekrana cümleyi yaz
      break; // swtich den çık

    case 2: // sayaca 2 ise
      Serial.println("2. motor calisiyor "); // ekrana cümleyi yaz
      break;// swtich den çık

    case 3: // sayaca 3 ise
      Serial.println("3. motor calsiyor"); // ekrana cümleyi yaz
      break;// swtich den çık

    case 4: // sayaca 5 ise
      Serial.println("Tüm motorlar calsiyor"); // ekrana cümleyi yaz
      break;// swtich den çık

    default: // sayaca başka bir değer ise
      Serial.println("yanlis deger girildi "); // ekrana cümleyi yaz
  }
}


Kategoriler Etiketler

Yorumunuzu ekleyin

E-posta hesabınız yayımlanmayacak.