ARDUINO DİJİTAL GiRİŞ KONTROLÜ
İÇ İÇE IF YAPISI Ardışık koşulları kontrol etmek için kullanılır. Örneğin : - Buton1’e basıldıktan sonra, buton2’ye basıldı mı ? Basıldıysa işlem yap. - Butona basıldıktan sonra buton bırakıldı mı ? (Düşen kenar) Bırakıldıysa işlem yap.
İÇ İÇE IF YAPISI if(koşul1) { if(koşul2) { işlemler } } Örnek Yapı : Koşul1 gerçekleşti mi ? Koşul1 gerçekleştiyse; Koşul2’de gerçekleşti mi ???? KOŞUL1 VE KOŞUL2 GERÇEKLEŞMİŞSE İSTENİLEN İŞLEMLERİ YAP!!
İÇ İÇE IF YAPISI Örnek Yapı : if(koşul1) { if(koşul2) { işlemler } } ** Bu yapıda, Koşul1 GERÇEKLEŞMİŞSE, Koşul2’nin kontrolü yapılır. İstenilen Koşul2 de gerçekleşmişse; istenilen işlemler yapılır. ** Eğer Koşul1 GERÇEKLEŞMEMİŞSE , Koşul2 hiç bir şekilde kontrol EDİLEMEZ. ** Koşul1 ve Koşul2 birlikte sağlanmadan işlemler YAPILAMAZ. Örnek Yapı : if(koşul1) { if(koşul2) { işlemler } }
İÇ İÇE IF YAPISI Örnek Yapı : if(koşul1) { if(koşul2) { işlemler } }
if(koşul1) { if(koşul2) { işlemler1 } else { işlemler2 } } Örnek Yapı – 2 : if(koşul1) { if(koşul2) { işlemler1 } else { işlemler2 } } Koşul1 gerçekleşti mi ? Koşul1 gerçekleştiyse; Koşul2 gerçekleşti mi ?? Koşul1 ve Koşul2 gerçekleştiyse, işlemler1’i yap. Koşul1 gerçekleştiyse; Koşul2 gerçekleşmediyse, işlemler2’yi yap.
if(koşul1) { if(koşul2) { işlemler1 } else { işlemler2 } } Örnek Yapı – 3 : if(koşul1) { if(koşul2) { işlemler1 } else { işlemler2 } } else { işlemler3 } Bir önceki örneğe ek olarak, *Koşul1 hiç gerçekleşmediği zaman, koşul2 zaten kontrol EDİLMEZ. *Koşul1 GERÇEKLEŞMEZSE direk olarak işlemler3 yapılır.
ÖRNEK UYGULAMA – 1 Senaryo : Arduino Uno ile 2 buton ve 2 LED’in kontrolü yapılacaktır. Buton1 => 10 nolu pin Buton2 => 11 nolu pin LED1=> 3 nolu pin LED2 => 4 nolu pin’e bağlıdır Buton1’e basıldıktan sonra, Buton2’ye de basılırsa, LED1 ışık verecektir, LED2 sönecektir. Buton1’e basıldıktan sonra Buton2’ye basılmazsa, LED1 sönecek, LED2 ışık verecektir. Gerekli devreyi kurun ve programı yazın.
Buton1’e basılmış mı ? Buton2’ye basılmış mı ? EVET Buton2’ye basılmış mı ? HAYIR LED2 YANSIN! LED1 SÖNSÜN! LED1 YANSIN! LED2 SÖNSÜN! EVET
Örnek uygulama 1 çözüm : void loop() { if(digitalRead(10)==1) { if(digitalRead(11)==1) { digitalWrite(3,HIGH); digitalWrite(4,LOW); } else { digitalWrite(4,HIGH); digitalWrite(3,LOW); } } } void setup() { pinMode(10,INPUT); pinMode(11,INPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); } ***Loop fonksiyonundaki parantez yapısına dikkat ediniz. Açılan her parantezin mutlaka kapalı karşılığı vardır.
ÖRNEK UYGULAMA – 2 Senaryo : Arduino Uno ile 2 buton ve 3 LED’in kontrolü yapılacaktır. Buton1 => 10 nolu pin Buton2 => 11 nolu pin LED1=> 3 nolu pin LED2 => 4 nolu pin LED3 => 5 nolu pin’e bağlıdır. Buton1’e basıldıktan sonra, Buton2’ye de basılırsa,sadece LED1 ışık verecektir, Buton1’e basıldıktan sonra Buton2’ye basılmazsa, sadece LED2 ışık verecektir. Buton1’e basılmazsa, sadece LED3 ışık verecektir.
Örnek uygulama 2 çözüm : void setup() { pinMode(10,INPUT); pinMode(11,INPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); }
Örnek uygulama 2 çözüm - devamı : void loop() { if(digitalRead(10)==1) { if(digitalRead(11)==1) { digitalWrite(3,HIGH); digitalWrite(4,LOW); digitalWrite(5,LOW); } else { digitalWrite(4,HIGH); digitalWrite(3,LOW); digitalWrite(5,LOW); } } else { digitalWrite(5,HIGH); digitalWrite(3,LOW); digitalWrite(4,LOW); } } Devre şemasını kendiniz tasarlayın.
ÖRNEK UYGULAMA – 3 Senaryo : Arduino Uno ile 1 buton ve 2 LED’in kontrolü yapılacaktır. Buton => 9 nolu pin LED1=> 6 nolu pin LED2 => 7 nolu pin Butona basıldıktan sonra; Bırakılırsa SADECE LED1 ışık verecek. Bırakılmazsa SADECE LED2 ışık verecek. Gerekli devreyi kurun ve programı yazın.
Örnek uygulama 3 çözüm : void setup() { pinMode(9,INPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); }
Buton bırakıldıysa sadece LED1 ışık verir. Örnek uygulama 3 çözüm : void loop() { if(digitalRead(9)==1) { delay(100); if(digitalRead(9)==0) { digitalWrite(6,HIGH); digitalWrite(7,LOW); } else { digitalWrite(7,HIGH); digitalWrite(6,LOW); } } } Butona basıldı mı ? Buton basıldıktan sonra bırakıldı mı ? Buton bırakıldıysa sadece LED1 ışık verir. Buton basıldıktan sonra bırakılmadıysa sadece LED2 ışık verir.
void setup() { pinMode(9,INPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); } void loop() { if(digitalRead(9)==1) { delay(100); if(digitalRead(9)==0) { digitalWrite(6,HIGH); digitalWrite(7,LOW); } else { digitalWrite(7,HIGH); digitalWrite(6,LOW); } } }
TEMRİN UYGULAMASI Temrin Adı : İç İçe IF yapısının kullanılması Temrin Amacı : Birden çok dijital girişten gelen bilgilere göre, dijital çıkışları kontrol edebilmek
Senaryo : 5 nolu pinden Start1 butonu, 6 nolu pinden Start2 butonu 7 nolu pinden Stop butonu, 8 nolu pinden optokuplör yardımı ile kontrol edilen röle üzerinden DC Motor kontrol, 9 nolu pinden LED kontrol edilmek isteniyor. Program ilk çalıştığında setup bölümünde LED ışık verecektir. Start1 butonuna basıldıktan sonra, Start2’ye de basılırsa LED sönecek, motor çalışacak. Stop butonuna basılıp-bırakıldığında Motor duracaktır. Stop butonuna basılıp- bırakılmazsa LED ışık verecektir, motor durmayacaktır. Gerekli devre şemasını tasarlayınız, programı yazınız ve devreyi çalıştırınız. UYGULAMA SÜRENİZ : 25 dk’dır.
İşlem Basamakları ( Yazmayın ) TEMRİN UYGULAMASI İşlem Basamakları ( Yazmayın ) 1) Senaryoyu müsveddeye not edin. 2) Gerekli programı bilgisayarda yazın. 3) Kurmanız gereken devreyi müsveddeye çizin. 4) Öğretmeninizden şema ve program için onay bekleyin. 5) Daha sonra malzemelerinizi alarak uygulamanızı yapın. 6) Devrenizin çalışmasını kontrol ettirmek için el kaldırarak sıra alın.
Defterde temrinle ilgili bulunması gerekenler TEMRİN UYGULAMASI Defterde temrinle ilgili bulunması gerekenler Temrin uygulaması ile alakalı aşağıda istenenleri defterinize düzenli bir şekilde yapın. 1) Senaryo 2) Devre şeması 3) Yazılım 4) Malzeme listesi ** Temrin tablosu çizmenize gerek yoktur.