Arduino-FOR Döngüsü

Arduino da Kontrol Komutları

 

FOR Komutu Ve Kullanımı

 

FOR, en basit anlamda belirli komut/komutların istenen sayıda tekrar ettirilmesini sağlar. Bunun için öncelikle başlangıç değeri belirlenir. Ardından limit olarak bitiş sayısı veya bitiş koşulu belirlenir.  Son olarak ise başlangıç değerinden itibaren sayının kaçar kaçar artacağı belirlenir. Örneğin 0’dan başlayarak 10’a kadar tekrar etmesini istediğimiz bir döngü oluşturacağımız zaman komut satırı şu şekilde yazılır;

Kullanım Formatı:

for(başlangıç değeri; koşul; artış miktarı)

{

Tekrar etmesi istenilen komut/komutlar;

}

Örnek :

İnt a;

for(a=0; a<10;a=a+1){

digitalWrite(led,HIGH);

delay(1000);

digitalWrite(led,LOW);

delay(1000);

}

Açıklama:

  • Öncelikle a adında değişken belirlenir. Ve for komutu içerisinde başlangıç değeri olarak a=0 yazılarak 0 değeri atanır.
  • Daha sonra bitiş sayısını belirlemek için koşul ifadesi belirlenir. Burada a<10 yazılarak a sayısı 10 sayısından küçük olduğu sürece program çalıştırılır. Yani koşul olarak belirtilen ifade doğru olduğu sürece döngü tekrar eder.
  • Son olarakta artış miktarı belirlenir. a=a+1 ifadesi a değişkenine her çevrimde bir arttırılmasını sağlayacaktır. Bu değer a=a+2 olsaydı her çevrimde değer 2 artacaktı ve 10 sayısına beş çevrimde ulaşılacaktı.
  • For komutunun sonunda “{“ açılır ve kapatılır “}”. Bu parantezler arasına tekrar etmesi istenilen komutlar yazılır.

Arduino-FOR Döngüsü” için 13 yorum

  • 05/12/2016 tarihinde, saat 11:54
    Permalink

    Cok aciklayici bi yazi olmus tesekkurler

    Yanıtla
  • 11/12/2017 tarihinde, saat 09:49
    Permalink

    Ufak bi düzeltme: Bu döngü “for(a=0; a<=10;a=a+1)" 10 defa değil, 11 defa tekrar ettirir.

    Yanıtla
    • 11/12/2017 tarihinde, saat 13:49
      Permalink

      Evet haklısınız. Gözden kaçırmışız. Teşekkürler

      Yanıtla
  • 17/01/2018 tarihinde, saat 17:56
    Permalink

    Merhaba, sensöre ses gelince, servoyu hareket ettiren bir kod yazmaya çalıştım. Servo da for döngüsü kullandım fakat if else komutunu kullanmaya kalktığımda hata alıyorum.

    Yanıtla
    • 18/01/2018 tarihinde, saat 09:48
      Permalink

      Merhaba.
      Kodları paylaşırsanız yardımcı olmaya çalışalım

      Yanıtla
  • 19/03/2018 tarihinde, saat 14:34
    Permalink

    merhaba
    ben dijital giriş olarak belirli bir pine 3 defa sinyal gelince bir role çektirip bırakmak istiyorum. döngünün tekrarlanması gerekiyor. ancak tekrardan 3 defa plus gelecek ve 3. plustan sonra role tekrar çekip bırakacak. ve yine başlıyacak.

    İnt a;
    int role = 5;
    int sinyal = 6;

    void setup ()
    {

    pinmode(role , OUTPUT) //roleye baglı
    pinmode(sinyal , INPUT) // giriş plus dısarıdan gelen sinyal

    }

    void loop ()
    {
    for(a=0; a<3;a=a+1)

    ıf digitalRead ==a;
    {
    digitalWrite(role,HIGH);

    delay(1000);

    digitalWrite(role,LOW);

    delay(500); //bu low dan sonra tekrardan 3. defa pus gelince çekecek ve bırakacak

    }
    kodlama dogrumu parantezler , ben baslayılı 2 hafta oldu yardımcı olusanız sevınırım

    Yanıtla
    • 20/03/2018 tarihinde, saat 10:27
      Permalink

      a = 0;

      loop(){

      if(digitalRead(6) == HIGH) a = a + 1; // 6. pine sinyal geldiğinde a değişkenini +1 yapacak.
      while(digitalRead(6) == HIGH); // 6. pin HIGH olduğu sürece sonsuz döngüde kalacak bu satırla

      if(a == 3) {
      digitalWrite(role, HIGH);
      delay(1000); //süreyi değiştirebilirsin!
      digitalWrite(role,LOW);
      a = 0;
      }
      }

      Yanıtla
  • 20/03/2018 tarihinde, saat 10:46
    Permalink

    Merhaba cevap için teşekkürler. INT ve setup kısmı doğru galiba sadece a nın ilk değeri 0 rı ilave edicem setup anlaşılan. yazılarınızı okudukça mantını iyice anlıyorum teşekkürler.
    akşama yazıcam kodu

    Yanıtla
  • 26/09/2018 tarihinde, saat 09:41
    Permalink

    for döngüsü ile yazdığım program gayet güzel çalışırken bugün for döngüsü hata veriyor.sebebi ne olabilir.takıldık kaldık.teşekkürler.

    Yanıtla
    • 27/09/2018 tarihinde, saat 23:24
      Permalink

      Yazmış olduğunuz kodunuzu paylaşırsanız yardımcı olmaya çalışırım

      Yanıtla
  • 17/12/2018 tarihinde, saat 11:47
    Permalink

    Merhaba Mehmet bey,

    Dht22 kullanarak şöyle bir kod kullanıyorum;

    if(sıcaklık < 25){
    digitalWrite(role1, HIGH)
    else
    digitalWrite(role1, LOW)
    }

    Birincisi bu komut roleyi çok yoruyor, 25-26 25-24 sıcaklık geçişlerinde. Roleyi for döngüsü ile 25ten 28 dereceye çıkana kadar açık tutabilir miyim?

    İkinci sorumda nem rolemi 60sn açık tutup 10sn kapalı durduktan sonra nem sensöründen aldığı veriye göre nem istenilenden düşükse tekrar açıp 60sn çalışığ 10sn nasıl bekletebilirim.

    İlginiz için şimdiden teşekkür ederim kolay gelsin 🙏

    Yanıtla
    • 31/01/2019 tarihinde, saat 03:37
      Permalink

      merhabalar.

      25 dereceden 28 dereceye kadar for kullanmadan da roleyi açık tutabilirsiniz.

      if koşulu içerisine 25 ten büyük ve 28 den küçük ise roleyi HIGH yap diyebilirsiniz. bunun i.in IF komutunun anlatıldığı konuya bakabilirsiniz.

      ikinci soruda da, 60 saniye açık tutabilirsiniz gecikme komutu kullanarak. roleyi HIGH yaptıktan sonra gecikme eleyebilirsiniz. aynı şekilde LOW yaptığınız yere de 10 sn gecikme ekleyebilirsiniz. yine bunun için de gecikme komutlarına bakabilirsiniz.

      Yanıtla
  • 20/01/2019 tarihinde, saat 15:06
    Permalink

    Dudigan bey bir konuda takildom bana yardımcı olabilir misiniz?

    Yanıtla

Mehmet Yalçın için bir cevap yazın Cevabı iptal et

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogcu bunu beğendi: