Toplam 1 adet sonuctan sayfa basi 1 ile 1 arasi kadar sonuc gösteriliyor
  1. #1
    Üyelik tarihi
    05.Ekim.2013
    Mesajlar
    334
    Aldığı Teşekkür
    23
    Ticaret Puanı
    0

    Standart 46. Arduino Interrupt (Kesinti) İşlemleri

    Bugünkü dersimizde arduino bir programı yürütürken yürümekte olan programı duraklatıp araya başka bir program sıkıştırmasını öğreneceğiz. Araya sıkıştırdığımız program komutları yerine getirildiğinde ana program kaldığı yerden devam edecektir.

    ANA PROGRAM AKIŞ DİYAGRAMI






















    Bir arduino programı pic ve plc programları gibi alt alta yazılan komutlardan oluşur. Arduino çalışmaya başladığında ilk komuttan itibaren tüm komutlar yukarıdan aşağıya doğru sırayla çalıştırılır. Arduinoya bağlı sensör, buton, röle kontakları gibi çevresel birimlerden gelen verilersürekli kontrol edildiğinden program son komuta geldiğinde tekrar başa döner ve bir döngü halinde sürekli çalışır.

    Örneğin bir yürüyen ışık için yandaki gibi bir akış diyagramı söz konusudur. Yandaki akış diyagramında görüldüğü gibi program tüm komutları yukarıdan aşağıya sırayla çalıştırmak ve en alttaki komutu uyguladıktan sonra tekrar başa dönüp bu işlemi sonsuz bir döngü haline getirmekten ibarettir.

    Akış diyagramına ait arduino kodlarımız:
    scription">Kod:
    // DIJITAL CIKIS PIN TANIMLAMALARI BASLADI
    int birinci_led = 1;
    int ikinci_led = 2;
    int ucuncu_led = 3;
    // DIJITAL CIKIS PIN TANIMLAMALARI BITTI
    
    // DIJITAL GIRIS / CIKISLARIN CIKIS MI YOKSA GIRIS MI OLDUKLARININ BELİRTİLMESİ BURADA BAŞLADI
    void setup() 
    {
    pinMode(birinci_led, OUTPUT);   // DİJİTAL 1 PİNİNE 1. LED BAĞLANACAK
    pinMode(ikinci_led, OUTPUT);   // DİJİTAL 2 PİNİNE 2. LED BAĞLANACAK
    pinMode(ucuncu_led, OUTPUT);   // DİJİTAL 3 PİNİNE 3. LED BAĞLANACAK
    }
    // DIJITAL GIRIS / CIKISLARIN CIKIS MI YOKSA GIRIS MI OLDUKLARININ BELİRTİLMESİ BURADA BITTI
    
    // ANA PROGRAM BURADA BASLADI
    void loop() {
    digitalWrite(birinci_led, HIGH); // DİJİTAL 1 PİNİNDEKİ LED YAKILDI
    delay(500); // 500 ms BEKLE
    digitalWrite(birinci_led, LOW); // DİJİTAL 1 PİNİNDEKİ LED SÖNDÜRÜLDÜ
    digitalWrite(ikinci_led, HIGH); // DİJİTAL 2 PİNİNDEKİ LED YAKILDI
    delay(500); // 500 ms BEKLE
    digitalWrite(ikinci_led, LOW); // DİJİTAL 2 PİNİNDEKİ LED SÖNDÜRÜLDÜ
    digitalWrite(ucuncu_led, HIGH); // DİJİTAL 3 PİNİNDEKİ LED YAKILDI
    delay(500); // 500 ms BEKLE
    digitalWrite(ucuncu_led, LOW); // DİJİTAL 3 PİNİNDEKİ LED SÖNDÜRÜLDÜ
    }
    // ANA PROGRAM BURADA BITTI
    Ana programa ait montajı yapılmış devre


    Ana programa ait fritzing çizimi


    Ana programa ait isis çizimi


    Ana programa ait çalışma videosu:



    Ana programa ait isis simülasyonu videosu:


    Arduinonun belli bir pinine gelen sinyalle belli bir fonksiyonun ya da önceden belirlenmiş bir alt programın çalıştırılmasını sağlamak için attachInterrupt komutu kullanılır.

    Kullandığımız arduinonun sürümüne göre dijital pinlerden bazıları attachInterrupt pini olarak da işlev görür. Aşağıdaki tabloda farklı arduino modellerine göre kullanılabilir attachInterrupt pinleri listelenmiştir.



    Şimdi program çalışırken programın her hangi bir aşamasında dijital 2. pine bağlı olan butona basıldığında 4., 5. ve 6. ledlerin yanmasını, dijital 3. pine bağlı olan butona basıldığında 4., 5. ve 6. ledlerin sönmesini isteyelim. Burada yapacağımız işleme interrupt (kesinti) denir.

    Arduino unonun dijital2 ve dijital3 pinleri (INT0 ve INT1) kesme komutu pinleridir. Yukarıdaki programda bu pinlere led bağlamıştık. Bu pinleri kullanabilmemiz için aşağıdaki şemada görüldüğü gibi 1., 2., ve 3. pinlerdeki ledleri 4., 5. ve 6. pinlere taşıyoruz. 7., 8. ve 9. pinlere de sırasıyla 4., 5. ve 6. ledleri bağlayacağız. INT0 ve INT1 girişlerine de birer adet buton bağlayıp programımızı hazırladığımız devre şemasına uygun olarak düzenleyeceğiz.

    Ana programa ek program eklenmiş devreye ait isis çizimi


    Ana programa ek program eklenmiş devreye ait fritzing çizimi


    Bitmiş devreye ait video:


    Bitmiş devreye ait program:
    description">Kod:
    // DIJITAL CIKIS PIN TANIMLAMALARI BASLADI
    int birinci_led = 4;
    int ikinci_led = 5;
    int ucuncu_led = 6;
    int dorduncu_led = 7;
    int besinci_led = 8;
    int altinci_led = 9;
    
    // DIJITAL CIKIS PIN TANIMLAMALARI BITTI
    
    // DIJITAL GIRIS / CIKISLARIN CIKIS MI YOKSA GIRIS MI OLDUKLARININ BELİRTİLMESİ BURADA BAŞLADI
    void setup() 
    {
    pinMode(birinci_led, OUTPUT);   // DİJİTAL 4 PİNİNE 1. LED BAĞLANACAK
    pinMode(ikinci_led, OUTPUT);   // DİJİTAL 5 PİNİNE 2. LED BAĞLANACAK
    pinMode(ucuncu_led, OUTPUT);   // DİJİTAL 6 PİNİNE 3. LED BAĞLANACAK
    pinMode(dorduncu_led, OUTPUT);   // DİJİTAL 7 PİNİNE 4. LED BAĞLANACAK
    pinMode(besinci_led, OUTPUT);   // DİJİTAL 8 PİNİNE 5. LED BAĞLANACAK
    pinMode(altinci_led, OUTPUT);   // DİJİTAL 9 PİNİNE 6. LED BAĞLANACAK
    pinMode(2, INPUT);   // DİJİTAL 4 PİNİNE 1. LED BAĞLANACAK
    pinMode(3, INPUT);   // DİJİTAL 5 PİNİNE 2. LED BAĞLANACAK
    attachInterrupt(0, kesme, RISING); // INT0 pini (dijital2 pini) 1 yapılırsa program kesme isimli fonksiyonu yürütür.
    attachInterrupt(1, kesme2, RISING); // INT1 pini (dijital3 pini) 1 yapılırsa program kesme2 isimli fonksiyonu yürütür.
    }
    // DIJITAL GIRIS / CIKISLARIN CIKIS MI YOKSA GIRIS MI OLDUKLARININ BELİRTİLMESİ BURADA BITTI
    
    // ANA PROGRAM BURADA BASLADI
    void loop() {
    digitalWrite(birinci_led, HIGH); // DİJİTAL 4 PİNİNDEKİ LED YAKILDI
    delay(2000); // 500 ms BEKLE
    digitalWrite(birinci_led, LOW); // DİJİTAL 4 PİNİNDEKİ LED SÖNDÜRÜLDÜ
    digitalWrite(ikinci_led, HIGH); // DİJİTAL 5 PİNİNDEKİ LED YAKILDI
    delay(2000); // 500 ms BEKLE
    digitalWrite(ikinci_led, LOW); // DİJİTAL 5 PİNİNDEKİ LED SÖNDÜRÜLDÜ
    digitalWrite(ucuncu_led, HIGH); // DİJİTAL 6 PİNİNDEKİ LED YAKILDI
    delay(2000); // 500 ms BEKLE
    digitalWrite(ucuncu_led, LOW); // DİJİTAL 6 PİNİNDEKİ LED SÖNDÜRÜLDÜ
    }
    // ANA PROGRAM BURADA BITTI
    
    void kesme()
    {
    digitalWrite(dorduncu_led, HIGH); // DİJİTAL 4 PİNİNDEKİ LED YAKILDI
    digitalWrite(besinci_led, HIGH); // DİJİTAL 5 PİNİNDEKİ LED YAKILDI
    digitalWrite(altinci_led, HIGH); // DİJİTAL 6 PİNİNDEKİ LED YAKILDI
    }
    void kesme2()
    {
    digitalWrite(dorduncu_led, LOW); // DİJİTAL 4 PİNİNDEKİ LED SÖNDÜRÜLDÜ
    digitalWrite(besinci_led, LOW); // DİJİTAL 5 PİNİNDEKİ LED SÖNDÜRÜLDÜ
    digitalWrite(altinci_led, LOW); // DİJİTAL 6 PİNİNDEKİ LED SÖNDÜRÜLDÜ
    }
    Böylece bir program yürütülürken araya başka bir programı sıkıştırıp her iki programı da yürütmüş olduk.

    Gerekmesi durumunda konuya ait program dosyalarını orjinal konu ekinden (üyelik gerektirir) indirebilirsiniz.

  2. The Following 2 Users Say Thank You to bolubeyi For This Useful Post:

    F.L.WRIGHT (18.Eylül.2015), Yeniwebci (18.Eylül.2015)

Konu Bilgileri

Bu Konuya Gözatan Kullanıcılar

Şu anda 1 kullanıcı bu konuyu görüntülüyor. (0 kayıtlı ve 1 misafir)

Benzer Konular

  1. 6. Arduino Programlama ve arduino programının kurulması
    Konu Sahibi bolubeyi Forum Arduino Dersleri
    Cevap: 0
    Son Mesaj : 08.Haziran.2015, 20:33
  2. Perl ile Dosya İşlemleri Nasıl Yapılır?
    Konu Sahibi optimusprime Forum Diğer Diller
    Cevap: 0
    Son Mesaj : 27.Aralık.2014, 20:56
  3. PHP ile Downloaded İşlemleri Nasıl Yapılır?
    Konu Sahibi optimusprime Forum Grafik - Tasarım Dersleri
    Cevap: 0
    Son Mesaj : 23.Aralık.2014, 12:43
  4. Mysql'da Matematik İşlemleri
    Konu Sahibi optimusprime Forum MySQL
    Cevap: 0
    Son Mesaj : 19.Aralık.2014, 23:02
  5. PHP'de Veritabanı İşlemleri Nasıl Olur?
    Konu Sahibi optimusprime Forum PHP
    Cevap: 0
    Son Mesaj : 01.Aralık.2014, 21:34

Yetkileriniz

  • Konu Acma Yetkiniz Yok
  • Cevap Yazma Yetkiniz Yok
  • Eklenti Yükleme Yetkiniz Yok
  • Mesajınızı Değiştirme Yetkiniz Yok
  •  
Yasal Bildirim
Sitemizde paylaşım yapan tüm üyeler T.C.K 20. Madde ve 5651 Sayılı Kanun'un 4. maddesinin 2. fıkrasına göre kendi konu ve mesajlarından sorumludur. Webmaster.bbs.tr hakkında yapılacak olan hukuksal ve diğer şikayetler için iletişim bölümünden iletişime geçilmesi halinde site yönetimi tarafından gereken işlemler yapılacak ve ilgili kişilere/kurumlara/vekillerine bilgi verilecektir.
Sosyal Medya