Arduino Tarifleri #5 – IF-ELSE Komutunu Kullanmak

689
7 Temmuz 2015 Ömer Faruk Uçar tarafından

Serimizin 5. bölümüne hoş geldiniz 🙂

Bu bölümde artık kendimizi biraz daha kod yazıyormuş gibi hissedebiliriz 🙂 Çünkü bundan önce yaptığımız videolarda sadece dijital giriş çıkış işlemleri yapmıştık ama artık işin içine mantığımızı da dahil etme zamanı geldi. Çünkü mantıksız kod çok sinsidir. 🙂

Mantık diyorum çünkü, bu videoda koşul komutu olan if-else komutunu öğreneceğiz arkadaşlar ve bu komut kullanırken biraz dikkatli olmayı gerektiriyor. Önceki videolarda kodda hata yaptığımızda derleyicimizin hata verdiğini gördünüz değil mi? İşte öyle bir hata türü daha var ki derleyicinin ruhu duymaz onu. ” Mantık Hataları “. Evet mantık hataları, ismi cafcaflı değil ama gerçekten bela bir şey. Her şeyi doğru yaparsınız, bağlantılar tamdır, kod hata vermez ama sistem çalışmaz. İşte bu mantık hatası dediğimiz hatalar en çok bu if-else komutlarında olur arkadaşlar.

Bu kadar hakkında yazdık çizdik ama bu video mantık hataları üzerine yapılmış bir video değil. Bu videoda ef-else kodunu kullanmayı, koşula bağlı kodlar yazmayı öğreneceğiz. Sadece bunu iyi öğrenmezsek başımıza ne geleceğine dikkat çekmeye çalıştım 🙂 Video yeteri kadar iyi merak etmeyin, zaten bu kod ileride çok fazla kullanılacak dolayısı ile zaman içinde daha iyi oturacaktır. Siz anlatılanlara verin kendinizi. İyi çalışmalar dilerim, hoşça kalın 🙂

Geçen videodan önce izlemiş olmanız lazım ama izlemedi iseniz pull-down/pull-up dirençlerini es geçmeyin arkadaşlar. Pull Down / Pull Up dirençleri.

Videoda Kullanılan Malzemeler:

Videoda Kullanılan Devre Şeması:

5

Videoda Kullanılan Kod:

/* 
 * Lezzetli Robot Tarifleri
 * Arduino Tarifleri -5-
 * IF-ELSE Komutunu Kullanmak
 * VİDEO >>> http://lezzetlirobottarifleri.com/video/arduino-tarifleri-5-if-else-komutunu-kullanmak
*/
int but1 = 2; // buton pinlerini atadık
int but2 = 3;
int but3 = 4;
int but4 = 5;
int but5 = 6;

int led1 = 8;   // Led pinlerini atadık
int led2 = 9;
int led3 = 10;

int b1d;// Buton 1 okunan değerini kaydetmemiz için db1 adında değişken atayoruz...ve diğerleri için
int b2d;
int b3d;
int b4d;
int b5d;

void setup()
{
  pinMode(but1 , INPUT); // Buton pinlerini giriş olarak atadık
  pinMode(but2 , INPUT);
  pinMode(but3 , INPUT);
  pinMode(but4 , INPUT);
  pinMode(but5 , INPUT);

  pinMode(led1 , OUTPUT); // Led pinlerini çıkış olarak atadık
  pinMode(led2 , OUTPUT);
  pinMode(led3 , OUTPUT);
}

void loop()
{
  b1d = digitalRead(but1);  // butonları oku ve durum bilgilerini değişkenlere kaydet
  b2d = digitalRead(but2);
  b3d = digitalRead(but3);
  b4d = digitalRead(but4);
  b5d = digitalRead(but5);

  if (b1d == HIGH) // b1d HIGH ise ( bu bağlantıda 1. butona basılmış ise)
    digitalWrite(led1 , HIGH);// led1'i yak

  else if (b2d == HIGH)  // b1d HIGH değil, b2d HIGH ise ( yani 2. butona basılmış ise)
  {
    digitalWrite(led1 , HIGH); //led1'i yak
    digitalWrite(led2 , HIGH); //led2'yi yak
  }

  else if (b3d == HIGH)      //3. butona basılmı ise
  {
    digitalWrite(led1 , HIGH);  // but3'e basıldığında led1 led2 ve led3 yakacak
    digitalWrite(led2 , HIGH);
    digitalWrite(led2 , HIGH);
  }
  else if (b4d == HIGH)        // 4. butona basılmış ise
  {
    digitalWrite(led1 , HIGH);  //ledler sırasi ise yanıp sönecekler
    delay(250);
    digitalWrite(led1 ,  LOW);
    digitalWrite(led2 , HIGH);
    delay(250);
    digitalWrite(led2 ,  LOW);
    digitalWrite(led3 , HIGH);
    delay(250);
    digitalWrite(led3 ,  LOW);
  }
  else if (b5d == HIGH)        // 5. butona basılmış ise
  {
    digitalWrite(led1 , HIGH);  // but5'e basıldığında led1 led2 ve led3 yakacak ve 250 ms sonra söndürecek.
    digitalWrite(led2 , HIGH);
    digitalWrite(led3 , HIGH);
    delay(250);
    digitalWrite(led1 ,  LOW);
    digitalWrite(led2 ,  LOW);
    digitalWrite(led3 ,  LOW);
    delay(250);
  }
  else          // eğer hiç bir butona basılmamış ise
  {
    digitalWrite(led1 ,  LOW); // tüm ledleri söndür.
    digitalWrite(led2 ,  LOW);
    digitalWrite(led3 ,  LOW);
  }
}

Kategoriler Etiketler

Yorumunuzu ekleyin

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