Ekim 19, 2021
11 11 11 ÖÖ
TCP nedir ? Aktarım Katmanı 2
Aktarım Katmanı Tcp Nedir
Yönlendirme Nedir 2 ?
Yönlendirme Nedir ?
Ağ Katmanı Nedir 2 ?
Ağ Katmanı Nedir ?
Veri Bağı Katmanı Nedir 2 ?
Android Studio Nasıl Kurulur ?
Veri Bağı Katmanı Nedir ?
Fiziksel Katman Nedir ?
Son Yazılar
TCP nedir ? Aktarım Katmanı 2 Aktarım Katmanı Tcp Nedir Yönlendirme Nedir 2 ? Yönlendirme Nedir ? Ağ Katmanı Nedir 2 ? Ağ Katmanı Nedir ? Veri Bağı Katmanı Nedir 2 ? Android Studio Nasıl Kurulur ? Veri Bağı Katmanı Nedir ? Fiziksel Katman Nedir ?

Interrupt PIR sensor

Paylaşım , Takip İçin

Malzemeler


Arduino Uno R3
PIR Sensörü
3 Adet Led
Piezo (Buzzer)


INTERRUPT NEDİR ?


Interrupt en genel anlamıyla işlemcimizde anlık olarak işlenmekte olan olayın her
hangi bir anında kesilmesi ve başka bir iş yapılmasına denir. İşlem kesildikten
sonra alt işlem bitirilene kadar üst işlem tamamlanmaz alt işlem tamamlandıktan
sonra üst işlem parçacığına devam edilir. Dikkat edilmesi gereken nokta bence
hangi olayların kesme olup hangilerinin kesme olmadığıdır. Eğer bir işlemin
normal akışı içerisindeki olaylar başka bir olayı engelliyorsa bu her zaman
interrupt olmaz.

Örnek olarak bizim 10 farklı işlemi içinde barındıran sıralı adımlardan oluşan bir
fonksiyonumuz var ve 7. Aşamasında 10 adım sonucunda oluşacak sonuç bir
anlığına duruyor ve alakasız bir işlem yapılıyor bu durum interrupt değildir. Çünkü
fonksiyonumuz bu adımı içermekte ve olumsuz da olsa 7. Aşamanın olması
beklenmektedir. Fakat bu 10 adımlık fonksiyonumuz boyunca internet
bağlantısının kopması ve internet bağlantısı yeniden sağlandığında işlemin kaldığı
yerden devam etmesi bir interrupt olarak tanımlanabilir çünkü internet
bağlantısının kopması beklenen bir durum değildi. Aynı trafikte kırmızı ışık
yanarken durmamız beklenen bir durum fakat yeşil ışık yanıyorken önümüzden
ambulans geçmesi sonucu durmamız işlemi interrupt olduğu gibi.


İNTERRUPT NEDEN KULLANILIR


Örneğin bizim arduino’nun interrupt pinlerine bağlı bir butonumuz olsun. Normal
şartlarda interrupt kullanmazdan direk buton kodu ile if-else şeklinde butonu
kullanmayı denersek kodumuz sadece if kısmı geldiğinde butona basılıp
basılmadığını kontrol edecek ve o zaman if’in içine girebilecek. Örneğin 5 saniye
yanıp 5 saniye sönen bir led imiz olsun ve butona basıldığında ledin yanıyorsa
yönmesini, sönük durumda ise yanmasını isteyelim. Bu durumda koddaki 5 saniyelik delay kısmına butona istediğimiz kadar basalım kod beklemede olduğu
için hiç bir işlemi yerine getiremeyecektir.


İşte bu noktada devreye interrupt giriyor. Interrupt, kod delay fonksiyonu içinde
bile olsa devreye girip istenilen işlemleri yaptırabiliyor. Yani kısaca interrupt, anlık
müdehale yapamız gereken yerlerde kullanılıyor


Arduino’da farklı görevlerde kullanılmak üzere çeşitli Interrupt’lar (kesmeler)
bulunur. Zaman kesmesi (timer interrupt) ve dış kesmeler (external İnterrupt) en
yaygın olarak kullanılan Arduino kesmeleridir.

KESME ÇEŞİTLERİ

1)Dış Kesme(External Interrupt)


Dış kesme, Arduino’nun özel pinlerindeki voltaj değişimlerine göre davranan
kesmedir.

Dış kesme pinleri her Arduino modelinde farklılık göstermektedir. Örneğin,
Arduino UNO’nun 3. pinine bir buton bağlayalım ve kesme olarak kullanılacak
şekilde ayarlayalım. Bu butona basıldığında kod her nerde olursa olsun bizim
istediğimiz işlemleri yapacaktır.


Dış kesme 4 farklı şekilde yapılabilir. Bunlar;


LOW – Dijital pindeki gerilim 0 olduğunda kesmeye girer

CHANGE – Belirli dijital pinde oluşacak her gerilim değişiminde kesmeye
girer. Yani pindeki gerilim 0’dan 5’e yükseldiğinde veya 5’ten 0’a düştüğünde
kesmeye girer.

RISING – Yükselen kenar olduğunda kesmeye girer. Yani dijital pindeki gerilim
0’dan 5 Volta çıktığında kesmeye girer.

FALLING – Düşen kenar olduğunda kesmeye girer. Yani dijital pindeki
gereilim 5’dan 0 Volta çıktığında kesmeye girer.
şeklindeki kesmelerdir.


Arduino da dış kesme AttachInterrupt(); fonksiyonu kullanılarak
yapılmaktadır. AttachInterrup fonksiyonu içerisinde 3 adet değişken
barındırır.
AttachInterrupt(dijitalPin,kesme fonksiyonu, kesme modu);
Bu değişkenlerin ilki dijitalPin olup Arduino’nun kesme için kullandığımız
pinidir. Fakat burada dijital pin olarak Arduino’da kaçıncı pine bağladığımız
değil örneğin Arduino UNO da 2. dijital pine bağlı ise 0, 3. dijital pine bağlı ise
1 yazılmalıdır.
Kesme fonksiyonu, kesmeye girildiğinde yapılması gereken işlemlerin içinde
bulunduğu fonksiyondur. Void loop’un altına yazılmalıdır.
Kesme modu, kesmeye ne zaman girileceğini gösteren modlar. LOW, RISING
vb.


Dış Kesme Örneği:Dış kesmeyi bir örnek ile pekiştirelim. Örneğimizde bir led, buton ile kontrol
edilecektir. Bunun için 1 adet interrupt, CHANGE modunda kullanılmıştır.

2)Zaman Kesmesi(Timer Interrupt)


Zaman kesmesi, belirlediğimiz süre sonunda, belirlediğimiz görevleri
yapmaya yarayan kesmedir. Örneğin 1 saniyede bir kodda nerede olursak
olalım sensörden veri okumak istersek bu kesmeyi kullanabiliriz. Kod o sırada
delay fonksiyonu içinde bile olsa sensörden veri almaya devam edecektir.
Timer kullanımı için zaman sayıcısının değerleri ayarlanmalıdır. Zaman
sayıcısı, her saat sinyalinde 1 artan sayaç gibi düşünülebilir ve belirli bir
değere ulaştığında sürenin dolduğu anlaşılır ve işlemcimiz kesme fonksiyonu
içerisine girer.


Örneğin 8 bitlik bir zaman sayıcımız olsun. Sayıcımızın ilk değeri 100 olarak
belirlensin. Bu değer her bir saat darbesinde artacak olup 255’i geçtiği anda
sıfırlanacaktır ve kesme fonksiyonu içerisine girilecektir. Bu fonksiyon
ISR(TIMER1_COMPA_vect) fonksiyonudur.


Zaman kesmesinin frekansı şu formül ile bulunur:


Zaman Kesmesi(Hz) = Arduino’nun kristal Hızı/(Zaman Kesmesinin
Çözünürlüğü – Sayıcının Başlangıç Değeri + 1)


Burada Arduino’nun kristal hızı 16MHz olup, zaman kesmesi çözünürlüğü 8
bit olduğu için 255’tir. yani Zaman kesmesinin frekansı maximum 62.500
olabilir

Interrupt PIR sensor

Diğer Arduino konusu için — Tıklayınız


Paylaşım , Takip İçin
5 1 vote
Article Rating

Bir Cevap Yazın

0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
HAYALİNDEKİ YAZILIM
%d blogcu bunu beğendi: