Elektrik Elektronik Teknolojisi Alanı Temrinleri

 
Hoşgeldiniz Ziyaretçi. Lütfen giriş yapın veya kayıt olun.

Kullanıcı adınızı, şifrenizi ve aktif kalma süresini giriniz

Gönderen Konu: 12. Arduino milis komutunun kullanımı  (Okunma sayısı 27522 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

06 Mart 2016, 00:54:31
Millis fonksiyonu Arduino'ya enerji verildiği zaman otomatik olarak çalışmaya başlar. Fonksiyon içerisinde Arduino'nun çalışma zamanı milisaniye cinsinden tutulur. Bu fonksiyon çağrıldığında Arduino'nun kaç milisaniye süresince çalıştığı döndürülür. Millis fonksiyonunu yaklaşık 50 gün çalışabilmektedir. Bu süreden sonra kendisini sıfırlar. Arduino'yu 50 gün boyunca hiç kapatmadan çalıştırdığımızı düşünelim. 50. günün sonunda millis fonksiyonunu kullandığımızda, fonksiyon sıfırlanacağı için Arduino yeniden başlamış gibi değerler döndürecektir.

Millis fonksiyonunun kullanımı gecikme için kullanılan delay fonksiyonunun kullanımına benzemektedir fakat delay fonksiyonu kullanıldığında Arduino başka bir işlem yapamamaktadır. Örneğin saniyede bir LED yakıp söndürmek isteyelim. Bu işlemi aşağıdaki komutla çok kolay bir şekilde yapabiliriz.

Kod:
Kodlari sadece uyeler gorebilir. Lutfen Uye Olun ya da Giris Yapin.
Yukarıdaki kod denendiğinde gerçekten de saniyede bir yanan ve sönen LED elde etmiş oluruz. Bu sırada LED'i yakıp söndürmekten başka bir iş yapamayız, çünkü delay fonksiyonu Arduino'yu bir saniye süresince bekletmektedir. Eğer bir saniyede bir LED yakıp söndürmek ve bu arada da seri monitöre sürekli olarak bir şeyler yazdırmak isteseydik, burada delay fonksiyonu kullanamazdık. İşte bu noktada millis fonksiyonunun kullanılması gerekmektedir.

Delay fonksiyonu yerine millis fonksiyonunun kullanılması
Aşağıdaki kodla hem saniyede bir LED yakıp söndürülmüş hem de sürekli olarak serial monitöre "Arduino burada başka işlemler de yapabilir." mesajı yazdırılmıştır.

Kod:
Kodlari sadece uyeler gorebilir. Lutfen Uye Olun ya da Giris Yapin.
Yukarıdaki kodda setup fonksiyonu içerisinde LED pini çıkış yapılmış ve seri haberleşme başlatılmıştır. Daha sonra millis fonksiyonunun döndürdüğü değerlerin tutulması için unsigned long tipinde değişkenler tanımlanmıştır. "yeniZaman" değişkeni millis fonksiyonundan dönecek sayıları tutmak için kullanılmıştır. "eskiZaman" fonksiyonu ise önceki süreyi tutmaktadır.

Bin salise yani bir saniyenin geçip geçmediğini kontrol etmek için "yeniZaman" değişkeninden "eskiZaman" değişkeni çıkartılmıştır. Eğer bu çıkartma işleminin değeri 1000 değerinden fazlaysa bir saniyenin geçtiği anlaşılmaktadır. Bu işlemlerin dışında da ekrana sürekli olarak mesaj yazdırılmaktadır. Böylece delay fonksiyonu yerine millis fonksiyonunun kullanılırsa, bu sürede başka işlemlerin de yapılabileceğini görmüş olduk.

Kaynak: gelecegiyazanlar.turkcell.com.tr
« Son Düzenleme: 30 Eylül 2016, 22:23:43 Gönderen: fatek »


iletişim: 0542 343 09 15