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:

  • Analog Çıkış İşlemleri(PWM Tekniği) Arduino'da Analog Çıkış İşlemleri ve PWMArduino ile fiziksel dünyayı kontrol ederken genellikle dijital sinyallerden bahsederiz: yüksek veya düşük, açık veya kapalı gibi. Ancak bazı durumlarda, bir LED'in parlaklığını a… Read More
  • Diziler(Array) 1. char Karakter Dizisichar, tek bir karakteri temsil eden bir veri tipidir (örn. 'A', 'b', '7'). Birden fazla karakteri yan yana depolamak istediğimizde, bu char'ları bir dizi içinde kullanırız. Bu yapıya karakter dizi… Read More
  • Timer Kesmesinde CTC Kesmesi Örneği Bu uygulamada timer1 kesmesi kullanıldı. Timer1 başlangıç değeri 0 ve bitiş değeri 15624 olarak ayarlanarak 1 sn'de bir programın kesme alt programına giderek buradaki ledin durumunu değiştirmesi sağlandı. NOT: Bu … Read More
  • String İfadesiString, Türkçe’de metin diye adlandırılan veri tipidir. String'lere metinsel ifadeler de denilebilir. Arduino programlamada "String" ifadesi, metinsel verileri saklamak ve işlemek için kullanılan bir nesnedir. Metin dize… Read More
  • Mesafe Sensörü UygulamasıHC-SR04, robotik ve elektronik projelerde sıkça kullanılan, uygun maliyetli ve kolay kullanımlı bir ultrasonik mesafe sensörüdür. İnsan kulağının duyamayacağı yüksek frekansta (genellikle 40 kHz) ses dalgaları yayarak nesnele… Read More

0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

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

950

Seri İletişim Protokolleri

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com