6 Haziran 2025 Cuma

 


1 sn = 1000 ms = 1000000 µs.


delay(ms)

ms : duraklatılacak milisaniye sayısı. İzin verilen veri türleri: unsigned long

Program akışına milisaniye cinsinden bekletme verir. 1 saniyelik gecikmeye ihtiyacımız var o zaman delay(1000); kullanırız. Şunu unutmamalıyız ki delay Arduino’ yu tamamen durdurur, delay ileri seviye programlarda tavsiye edilmeyen bir durumdur. Örneğin; bir ledimiz 1’er saniye aralıklarla yanıp sönsün aynı zamanda butona basılıp basılmadığını kontrol etmek istersek edemeyiz. Program sağlıklı olmaz. Bunu çözmek için interruptlar veya timerlar kullanılır. İleri seviye kullanıcılar 10ms’den büyük beklemeler için başka metotlar kullanır.


delayMicroseconds(mikrosaniye)

µs: duraklatılacak mikrosaniye sayısı. İzin verilen veri türleri: unsigned int

Program akışına mikrosaniye cinsinden bekletme verir. Bu işlev 3 mikrosaniye ve daha yüksek aralıklarda çok hassas bir şekilde çalışır. Birkaç bin mikrosaniyeden daha uzun gecikmeler için delay() kullanmalısınız.


micros()

zaman=micros(). "zaman" değişkeni veri türü unsigned long.

Arduino kartı geçerli programı çalıştırmaya başladığından bu yana mikrosaniye sayısını döndürür. Bu sayı yaklaşık 70 dakika sonra taşacaktır (sıfıra geri dönecektir).  Çünkü bellekte ayrılan unsigned long kadar yer dolacaktır.

Arduino başka işlemler yaparken hatta delay() ile çalışma esnasında bekleme bile yapsa micros() komutu paralelde çalışmaya devam eder ve bekleme komutundan etkilenmez.


millis()

zaman=millis(). "zaman" değişkeni veri türü unsigned long.

Arduino kartının geçerli programı çalıştırmaya başlamasından bu yana geçen milisaniye sayısını döndürür. Bu sayı yaklaşık 50 gün sonra taşacak (sıfıra geri dönecektir). Çünkü bellekte ayrılan unsigned long kadar yer dolacaktır.

Arduino başka işlemler yaparken, hatta delay() ile çalışma esnasında bekleme bile yapsa millis() komutu paralelde çalışmaya devam eder ve bekleme komutundan etkilenmez.


Örnek Program Kodları:

unsigned long zaman1,zaman2;

void setup() 

{

      Serial.begin(9600);

      Serial.println("delay ms bekliyor...");

      delay(1000);

      Serial.println("delay mikrosn bekliyor...");

      delayMicroseconds(1000);

      Serial.println("bitti");

}


void loop() 

{

      zaman1=micros();

      Serial.print("zaman1= "); Serial.println(zaman1);

      delay(1000);

      zaman2=millis();

      Serial.print("zaman2= "); Serial.println(zaman2);

      delay(1000);

}


delay() komutu kullanmadan bir Led'in belirli aralıklarla yanıp-sönmesini sağlayan program:

Aşağıda yaptığımız uygulamada millis() komutu ile Led'in 1 ms aralıklarla yanıp-sönmesini sağlarken, butona bastığımızda ekrana "butona basıldı" yazısının yazdırılmasını sağladık. 

delay() komutunu ile bekleme yaptığımızda program işleyişi bir süre durdurulduğu için Arduino bu bekleme esnasında dışarıdan gelen bazı bilgilere, girişlere vs. kapalı kalabilir, algılayamayabilir. Bunun için ledin yanıp sönme süresini millis() komutu ile kontrol ederek, Arduino'nun dıştan gelen verilere duyarsız kalmasının önüne geçmiş oluruz.


Örnek Program Kodları:

#define buton 3

#define led 2

unsigned long simdiki_zaman = 0;

unsigned long eski_zaman = 0;

bool led_durum = 0;

void setup()

{

      Serial.begin(9600);

      pinMode(buton, INPUT);

      pinMode(led, OUTPUT);

}

void loop()

{

      if (digitalRead(buton) == 1)

      {

            Serial.println("butona basıldı");

            while (digitalRead(buton) == 1)

            {

                  delay(10);

            }

       }

      simdiki_zaman = millis();

      if (simdiki_zaman - eski_zaman > 1000)

      {

            led_durum = !led_durum;   //led_durum eşittir led_durumun tersi. yani 1 ise 0, 0 ise 1 yapar.

            eski_zaman = simdiki_zaman;

      }

      digitalWrite(led, led_durum);

}



_________________________________________________________________________________________________________________________________________________________

Benzer Yazılar:

  • goto Komutu goto komutu, Arduino programlamada (ve genel olarak C/C++ gibi dillerde) bir programın akışını belirli bir etikete (label) yönlendirmek için kullanılan bir atlama komutudur. goto komutu, programın yürütme sırasını, kodu… Read More
  • Fonksiyonlar Arduino programlamada (ve genel olarak C++'da) fonksiyonlar, kodunuzu düzenlemenin, tekrar kullanılabilir hale getirmenin ve programın karmaşıklığını azaltmanın temel taşlarından biridir. Fonksiyon, ana programda sırası… Read More
  • Dijital Pinlerin Giriş Olarak Kullanım Detayları Dijital Pinleri Giriş Olarak BelirlemekArduino'da dijital pinleri giriş olarak kullanmak, buton okumaktan sensör verisi almaya kadar birçok etkileşimli projenin temelidir. Arduino'da bir dijital pini giriş olarak k… Read More
  • Dijital Pinlerin Çıkış Olarak Kullanım DetaylarıDijital Pinleri Çıkış Olarak BelirlemekArduino'da dijital pinleri çıkış olarak kullanmak, LED yakmaktan motor kontrol etmeye kadar birçok uygulamanın temelini oluşturur. Arduino'da bir dijital pini çıkış olarak kullanmak… Read More
  • switch-case İfadesi Arduino'da switch-case yapısı, belirli bir değişkenin değerine göre farklı kod bloklarını çalıştırmak için kullanılan, oldukça kullanışlı bir kontrol yapısıdır. Özellikle birden fazla if-else if koşulunu yönetmek yerine… Read More

0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Arduino Eğitimi Konu - 9

Toplam Sayfa Görüntüleme Sayısı

979

Seri İletişim Protokolleri

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com