Elektrik elektronik temrinleri

Ders Notlarý => Arduino Öðreniyorum => Arduino Genel => Konuyu balatan: Hasan ERTÜRK - 06 Mart 2016, 00:54:31

Balk: 12. Arduino milis komutunun kullanýmý
Gnderen: Hasan ERTÜRK - 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 (https://gelecegiyazanlar.turkcell.com.tr/konu/arduino/egitim/arduino-201/millis-fonksiyonu-nedir-ve-nerelerde-kullanilir)