Merhaba arkadaşlar basit Arduino kodlama derslerimizin son dersine hoş geldiniz bu dersimizde dögüler ve koşulları göreceğiz. Karadayı Rototics olarak önerimiz bu dersi dikkatli bir şekilde okuyarak mantığını anlamanız yönündedir. Çünkü döngüler ve koşullar konusu Arduino kodlarken en çok sıkıntı çekilen bölümlerden biridir. Bu bölümde işleyeceğimiz kodların listesi şu şekilde;
- if-else
- for
- switch-case1-case2..
- while
- do-while
Değerli Karadayı Robotics okurları bu dersimizdeki işleyeceğimiz kodların listesini gördükden sonra ve detaylı açıklamaya geçmeden önce bir hatırlatma yapmak istiyorum. Bu derslerimizden sonra konularımızın pekişmesi için bazı projelerimizde kullandığımız kodları kullanarak YORUMLAMA dersleri yayınlayacağız. Tahmini 3 dersten oluşacak yorumlama derslerimizi kaçırmamanızı tavsiye ederiz.
İf-else
int mesafe = 0; // mesafe başlangıç değerimizi 0 olarak belirledik void setup() { } void loop() { if ( mesafe > 20 ) // evet arkadaşlar varsayalımki 2 tane motorumuz var. Eğer mesafemiz 20 cm'den // Aşağıdaysa aşağıdaki kodumuz çalışsın { motor1.run(FORWARD); // YUKARIDAKİ ŞART DOĞRU İSE MOTOR 1 VE 2 İLERİ motor2.run(FORWARD); // } else // Eğer yukarıdaki durumdan farklı bir durum yani mesade 20 cm ve yukarısı ise // Aşağıdaki kodları uyguluyoruz { motor1.run(RELEASE); // YUKARIDAKİ ŞART DOĞRU DEĞİL İSE MOTORLAR DURSUN motor2.run(RELEASE); }
for
int a; // A ADINDA BİR DEĞİŞKEN ATIYORUZ ARKADAŞLAR int buzzer = 7; // BUZZER PİNİMİZİN 7 OLDUĞUNU BELİRLEDİK void setup() { pinMode(buzzer, OUTPUT); // BUZZDER PİNİMİZİN ÇIKIŞ OLDUĞUNU BELİRLEDİK } } void loop() { for(a=0; a<=10;a=a+1){ // a=0 YANİ A DEĞİŞKENİMİZİN BAŞLANGIÇ DEĞERİ 0 // a<=10 YANİ A DEĞİŞKENİMİZİN SON DEĞERİ 10 // a=a+1 yani bu döngü 10 a kadar ulaşana kadar 10 kez tekrar edilecek // Eğer a+2 olsaydı 2 şer 2 şer atlayacaktı ve bu döngü 5 kez tekrar edilecekti digitalWrite(buzzer,HIGH); // Eğer döngü doğruysa buzzer 1 saniye ses çıkarsın delay(1000); digitalWrite(buzzer,LOW) // 1 saniye ses çıkardıktan sonra 1 ssaniye sussun ve bunu 10 kere tekrarlasın. delay(1000); }
switch-case1-case2..
int deger; // değer adında bir kompanente bağlı bir değişken atadık const int led 5; // 5. pine led sabitini atadık const int led2 6; // 6. pine led2 sabitini atadık void setup() { pinMode(led, OUTPUT); // led pininin çıkış olduğunu belirledik pinMode(led2, OUTPUT); // led 2 pininin çıkış olduğunu belirledik } void loop() { } switch(deger) // değişkenimizi buraya giriyoruz { case 1: digitalWrite(led, HIGH); // eğer değişkenimiz 1 değerini verirse led yansın break; //şart sağlandı alttaki komuta geçmemesi için kodu durdurduk case 2: digitalWrite(led, HIGH); // eğer değişkenimiz 2 değerini verirse led2 yansın break; //şart sağlandı kodu durdurduk } }
while
int kosul; // BİR KOŞUL DEĞİKENİ BELİRLİYORUZ const int buzzer 5; // 5. PİNE BUZZER SABİTİNİ ATADIK void setup() { pinMode(buzzer, OUTPUT); // BUZZER PİNİNİN ÇIKIŞ OLDUĞUNU BELİRLEDİK } void loop() { while(kosul < 20){ // EĞER KOSUL DEĞERİ 20 DEN KÜÇÜKS OLDUĞU SÜRECE AŞAĞIDAKİLER UYGULANSIN ( EĞER DÖNGÜMÜZ BAŞTA YANLIŞ İSE KODUMUZ HİÇ BİR ZAMAN ÇALIŞMAYACAKTIR digitalWrite(buzzer, HIGH); // KOSUL SAĞLANIRSA BUZZER 500 MS BOYUNCA SES ÇIKARSIN VE 500 MS SUSSUN delay(500); digitalWrite(buzzer, LOW); delay(500); } }
do-while
int kosul; // BİR KOŞUL DEĞİŞKENİ BELİRLİYORUZ const int led 5; // 5. PİNE LED SABİTİMİZİ ATIYORUZ void setup() { pinMode(led, OUTPUT); // LED PİNİMİZİN ÇIKIŞ OLDUĞUNU BELİRLEDİK } void loop() { do { digitalWrite(buzzer, HIGH); // KOSUL SAĞLANMADAN ÖNCE BUZZER 500 MS BOYUNCA SES ÇIKARSIN VE 500 MS SUSSUN delay(500); digitalWrite(buzzer, LOW); delay(500); }while (kosul < 20 ); // KOSUL SAĞLANDIĞI SÜRECE YİNE YUKARIDAKİ KODLAR DEVREYE GİRSİN }
1 yorum:
Click here for yorumMerhaba,Diğer projenizde de sorduğum soruyu bu konu altında sormak daha mantıklı geldi, Eğitimizi çok beğendim ama mesela bir kapıyı takip eden ultrasonik sensörüm var ve kapı kapalı iken alarm çalmasın ta ki kapı sensöre 1 cm yada 2 cm yaklaşır yaklaşmaz aradaki farkı anlayıp alarm çaldırmak istesem nasıl bir kod yapısı kullanabilirim?
Çok teşekkürler.
Show Conversion Code Hide Conversion Code Show Emoticon Hide Emoticon