Arduino Programlama Dili – Zaman Kavramı

0
4355
Okunma

Arduino Zaman Kavramı

Arduino Zaman Kavramı


Arduino Zaman Kavramı

millis()

Arduino kurulu mevcut programı çalıştırmaya başlamasından bu yana milisaniye sayısını döndürür.

Yaklaşık 50 gün sonra bu numara taşacaktır (sıfıra döner).

Bir programcı int gibi daha küçük veri türleriyle aritmetik yapmaya çalışırsa millis() için dönüş değerinin unsigned long olduğunu, mantıksal hataların oluşabileceğini lütfen unutmayın.

unsigned long zaman;                    // zaman değişkeni tanımlandı.

void setup(){
  Serial.begin(9600);                   // seri iletişim bağlatıldı.
}
void loop(){
  Serial.print("Zaman: ");              // seri monitöre "Zaman: " yazıldı.
  zaman = millis();                     // program başladığında zaman değişkeni milisaniye cinsinden saymaya başladı.
  Serial.println(zaman);                // seri monitöre zaman değişkenin değeri atandı.
  delay(1000);                          // 1 saniye bekle.
}

micros()

Arduino kurulu geçerli programı çalıştırmaya başladıktan sonra geçen mikrosaniye sayısını döndürür.

Yaklaşık 70 dakika sonra bu numara taşacaktır (sıfıra döner).

16 MHZ Arduino kartlarda (örn., Duemilanove ve Nano), bu işlevin çözünürlüğü dört mikrosaniyeye eşittir (yani döndürülen değer daima dörtlü bir katıdır). 8 MHz Arduino kartlarında (ör. LilyPad), bu işlev sekiz mikrosaniyelik bir çözünürlüğe sahiptir.

Not: saniyede 1.000 mikrosaniye ve 1.000.000 mikrosaniye vardır.

unsigned long zaman;                    // zaman değişkeni tanımlandı.

void setup(){
  Serial.begin(9600);                   // seri iletişim bağlatıldı.
}
void loop(){
  Serial.print("Zaman: ");              // seri monitöre "Zaman: " yazıldı.
  zaman = micros();                     // program başladığında zaman değişkeni mikrosaniye cinsinden saymaya başladı.
  Serial.println(zaman);                // seri monitöre zaman değişkenin değeri atandı.
  delay(1000);                          // 1 saniye bekle.
}

delay()

Programı parametre olarak belirtilen süre (milisaniye cinsinden) duraklatır. (Saniyede 1000 milisaniye var.)

delay(milisaniye) şeklinde kullanılır.

int ledPin = 13;                   // ledpin değişkeni 13. pindir.
void setup()
{
 pinMode(ledPin, OUTPUT);          // ledpin çıkış olarak yapılandırıldı.
}
void loop()
{
 digitalWrite(ledPin, HIGH);       // Ledi yak.
 delay(1000);                      // 1 saniye bekle
 digitalWrite(ledPin, LOW);        // Ledi söndür.
 delay(1000);                      // 1 saniye bekle
}

Uyarı

delay() işlevi ile yanıp sönen bir LED oluşturmak kolaydır ve birçok skeç düğmeyi bırakmak gibi görevler için kısa gecikmeler kullansa da, bir eskizdeki delay() kullanımı önemli dezavantajlara sahiptir.

delay() işlevi kullanığımızda belirttiğimiz değer kadar arduino hiçbirşey yapmadan bekler. O yüzden bazı durumlarda millis() işlevi kullanırız. Bu fonksiyon arduino programı çalıştırmaya başladığından beri geçen süreyi verdiği için istediğimiz süre aralığında işlem yaptırabilir ve bu sayede arduinoyu hiç durdurmamış oluruz.

delayMicroseconds()

Programı parametre olarak belirtilen süre boyunca (mikro saniye olarak) duraklatır. Milisaniye içinde bin mikrosaniye saniyede bir milyon mikrosaniye vardır. Şu anda, kesin bir gecikme yaratacak en büyük değeri 16383‘tür.

Bu, gelecekteki Arduino sürümlerinde değişebilir.

Bunun yerine birkaç bin mikrosaniyeden daha uzun gecikmeler için delay() kullanmalısınız.

int outPin = 8;              // outPin değişkeniş 8 olarak atandı.

void setup()
{
 pinMode(outPin, OUTPUT);    // outpin değişkeni çıkış oldu.
}
void loop()
{
 digitalWrite(outPin, HIGH); // out pine enerji ver.
 delayMicroseconds(50);      // 50 mikrosaniye bekle.
 digitalWrite(outPin, LOW);  // outpinin enerjisini kes.
 delayMicroseconds(50);      // 50 mikrosaniye bekle.
}

8 numaralı pini, bir çıkış pini olarak çalışacak şekilde yapılandırır. Yaklaşık 100 mikrosaniye süreli bir darbe şekli gönderir.

Uyarılar ve Bilinen Sorunlar

Bu işlev, 3 mikrosaniye ve üzeri aralıklarla çok doğru çalışır. 3 Mikrosaniye’den daha az değerlerde bu fonksiyon doğru çalışmayalabilir.! Arduino 0018 itibarıyla, delayMicroseconds() artık kesmeleri devre dışı bırakmaz.

İlgili Örnekler:

Arduino Yerleşik(Temel) Örnekler :

Bu linkteki her örnekte bu kodların uygulaması bulunmaktadır.


NOT: Buradaki bilgiler arduino.cc sitesinden Türkçeye çevrilmiştir.
Türkçe çevirinin tüm hakları saklıdır.
Bu web sayfası sadece link olarak paylaşılabilir.
Sayfada herhangi bir hata, öneri ve yorumlarınız için iletişim kurmanızı bekleriz.


CEVAP VER

Please enter your comment!
Please enter your name here

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.