ARDUINO 10 - LED GÖZ KIRPIYOR 😉 delay() fonksiyonu kullanımı

Bir önceki konuda ilk programımız olan led yakma programını hem Arduino kütüphanesini kullanarak hem de Atmega328p kaydedicilerini kullanarak iki şekilde de yazmıştık. Bu çalışmamızda  delay() fonkisyonunu kullanarak program içersinde gecikme/bekleme istenilen durumlarda nasıl kullanıldığını anlatacağım. ilk programdaki ledimiz sürekli olarak yanık kalıyordu . Bu çalışmamızda ledimizi belli bir süre yanık belli bir süre sönük bırakacak programı yazacağız. 


Bir önceki konuda yazdığımız ledimizi devamlı yanık bırakma  programımız şu şekildeydi

#define led 13
void setup() {
        
     pinMode(led,OUTPUT);
  }

void loop() {
                
  digitalWrite(led,HIGH);

 }

bu programımıza şimdi delay() fonksiyonunu kullanarak gecikme ekleyeceğiz ve ledimiz bir süre yanık bir süre sönük olacak .

Önce delay() fonksiyonundan bahsedelim. delay() fonksiyonu arduino kütüphanesi içinde olan ve  ( ) parantezleri arasına yazılan miktar kadar milisaniye cinsinden   bekleme / gecikme sağlayan bir fonksiyondur. 

delay(1000) demek 1000msn yani 1sn bekle demektir. delay() fonksiyonu sırasında mikrodenetleyici herhangi başka bir işlem yapamaz belirtilen süre kadar bekler. 

Bir diğer delay() fonksiyonumuz delayMicroseconds() fonksiyonudur. Bu fonksiyon ise mikrosaniye olarak bekleme sağlar.


delay(100)                           : 100milisaniye bekle 
delayMicroseconds(100)   : 100 mikrosaniye bekle

program yazarken delay() fonksiyonlarına içersine sayı yerine bu sayının saklandığı değişken isimleride yazabiliriz. Örneğin delay(sure) fonksiyonunda sure değişkeni içersindeki bilgi kadar bekleme yapılır. delay() fonksiyonları değişken tanımlamaları , delay( ) için  unsigned longdelayMicroseconds( ) için ise unsigned int türünden yapılmalıdır.

örneğin 

unsigned long sure=250;

delay(sure);                                komutu 250 milisaniyelik gecikeme sağlar.

unsigned int bekle = 250;

delayMicroseconds(bekle);       250 mikrosaniyelik gecikme sağlar.

buna göre 1sn aralıkla yanıp sönen led programımız


#define led 13

void setup() {
        
     pinMode(led,OUTPUT);
  }

void loop() {
                
  digitalWrite(led,HIGH);

  delay(1000);

  digitalWrite(led,LOW);

  delay(1000);

 
 }

şeklinde olacaktır. Programımıza yeni eklediğimiz komutlar kırmız renkle gösterilmiştir.

programda ;

digitalWrite(led,HIGH); komutu led in bağlı olduğu D13 pininin çıkışını HIGH yani lojik 1 yapar. ve led yanar

delay(1000);  1000 milisaniye bekler led yanık kalır

digitalWrite(led,LOW);  komutu led in bağlı olduğu D13 pininin çıkışını LOW yani lojik 0 yapar. ve led soner. 


delay(1000); 1000 milisaniye bekler led sönük  kalır

ve bu komutlar void loop() fonksiyonu içinde olduğundan dolayı, 1000msn led yanık  1000msn led sönük işlemi  devamlı olarak tekrarlanır..

  
aynı işlemi Atmega328p'nin kaydedicilerini kullanarak yaparsak

#define led 5

void setup() {

  DDRB |=(1<<led);

}

void loop() 

    {
      PORTB |=(1<<led);

      delay(1000); 
      PORTB &=~(1<<led);
      delay(1000);  
}


şeklinde olacaktır.

Yorumlar