6 Temmuz 2025 Pazar

 



Bu uygulamada; program başladığında Arduino 13 nolu pine bağlı led sürekli yanıp söner. 5 nolu pine bağlı butona basıldığında pin sıfıra götürülür ve kesme çalışır. Kesme çalıştığında ana program durur. Kesmeye gidildiğinde butona basık olduğu süre içinde 8 nolu pine bağlı led yanar. Elimizi butondan çektiğimizde söner.

NOT: Bu uygulamadaki kesme işlemi Proteus'ta çalışmadı. Bu nedenle fiziksel Arduino kartında deneme yapıldı ve çalıştı.


Program Kodları:

int kesme_led = 8;

int surekli_led = 13;

int kesme_pin = 5;


void pciSetup(byte pin)     //Pin Change Interrupt işleminde; belirlediğimiz pin için gerekli ayarları yapan ve bu pin için registerlardaki değerleri değiştiren fonksiyon

{

      *digitalPinToPCMSK(pin) |= bit(digitalPinToPCMSKbit(pin));      // enable kesme_pin

      PCIFR  |= bit(digitalPinToPCICRbit(pin));     // clear any outstanding interrupt

      PCICR  |= bit(digitalPinToPCICRbit(pin));     // enable interrupt for the group

}


void setup()

{

      pinMode(kesme_led, OUTPUT);

      pinMode(kesme_pin, INPUT);

      pinMode(surekli_led, OUTPUT);


      pciSetup(kesme_pin);      //kesme yapacağımız pin için gerekli ayarları yapan fonksiyonu çağırır.

}


void loop()

{

      digitalWrite(surekli_led, HIGH);

      delay(500);

      digitalWrite(surekli_led, LOW);

      delay(500);

}


ISR(PCINT2_vect)     //PortD'den kesme geldiğinde bu kısım çalışır. 

{

      //butona basıkken led yanar elimizi çekince led söner.

      digitalWrite(kesme_led, HIGH);

      while (digitalRead(kesme_pin) == 0);

      delay(50);

      digitalWrite(kesme_led, LOW);

}


Devre Şeması:




_____________________________________________________________________________________________________________________________________________________


0 comments:

Yorum Gönder

Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Seri İletişim Protokolleri

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com