Arduino'da Harici Kesme Yaratma

Adruino'nun çeşitli kesme türleri vardır.Interrupt, arduino'nun normal görevini durdurduğu veya döngüsünü durdurduğu ve verilen kesme işlevi görevini tamamlamak için kesme işlevine gittiği bir işlemdir. Harici olarak oluşturulan harici kesme. Arduino uno'da sadece iki harici kesme pimi vardır . Dijital pim 2 ve Dijital pim 3'tür.

Harici kesmenin başlatılmasından sonra, bu pimde sinyalde herhangi bir değişiklik varsa. Sonra bu harici kesinti yaratacaktır.

Adım 1: Harici Kesme Pimleri

Arduino uno'nun iki harici kesme pimi Dijital pim 2 ve Dijital pim 3 vardır.

Arduino Mega'da 6 harici kesme pimi Dijital pim 2, Dijital pim 3, Dijital pim 21, Dijital pim 20, Dijital pim 19 ve Dijital pim 18 vardır.

Adım 2: Arduino AttachInterrupt () İşlevi

attachInterrupt () işlevi harici kesme oluşturmak için kullanılır.

Sözdizimi
attachInterrupt (kesme, ISR, mod)

attachInterrupt (pin, ISR, mod) (yalnızca Arduino Due)

Parametreler

interrupt: kesme sayısı (int)

pin: pin numarası (sadece Arduino Due)

ISR: kesme oluştuğunda çağrılacak ISR; bu işlev parametre almamalı ve hiçbir şey döndürmemelidir. Bu işlev bazen antivirüs hizmeti yordamı olarak adlandırılır. Mode: kesintinin ne zaman tetiklenmesi gerektiğini tanımlar. Dört aday, geçerli değerler olarak önceden tanımlanmıştır:

(1) DÜŞÜK: pim düşük olduğunda kesmeyi tetiklemek için,

(2) DEĞİŞTİR: pim her değer değiştirdiğinde kesmeyi tetiklemek için

(3) YÜKSELTME: pim alçaktan yükseğe çıktığında tetiklemek için,

(4) DÜŞME: pim yüksekten alçağa indiğinde.

Due kurulu ayrıca şunları sağlar:

Pim yüksek olduğunda kesmeyi tetiklemek için YÜKSEK. (Yalnızca Arduino Due)

İadeler:

Yok.

Bunu arduino sayfasından da görebilirsiniz.Link: //www.arduino.cc/en/Reference/AttachInterrup ...

Adım 3: Harici Kesme Kodu Yazma (adım-1)

Amaç: Dijital pin 2'deki harici kesmeyi algılamak için aruino'mızı başlatacağız. Bu harici kesme boyunca bir görevi tamamlamak istiyoruz. Görev, 13 numaralı pimdeki LED'i değiştirmek. harici kesinti aldıktan sonra 13 pim kapalıdır.

Not: interrupt fonksiyonunda delay () ve millis () çalışmaz.Ancak, sadece delayMicroseconds () kullanabilirsiniz.

Haydi Yapalım şunu.......

Adım 4: Harici Kesme Kodu Yazma (Geçersiz Kurulum ()) (adım-2)

Void kurulumunda () dijital 13 pini çıkış ve kesme fonksiyonu olarak attatchInterrupt () olarak başlatmamız gerekir.

geçersiz kurulum ()

{

pinMode (13, ÇIKIŞ);

attachInterrupt (0, yanıp sönüyor, DÜŞEN);

}

Burada, Pin 13 çıktı olarak bildirilir. AttachInterrupt () işlevinde ilk parametre "0" dır. Dijital pin 2'yi harici kesinti olarak kullanacağımız için sıfırdır. İstediğiniz modda dört durum vardır: DÜŞÜK, DEĞİŞTİRME, YÜKSELTME, DÜŞÜNME ve arduino için ekstra bir yüksek. DÜŞÜNÜYORUZ, pin 2'de düşen bir kenar sinyali algıladığında, kesme fonksiyonuna gidecek ve görevi tamamlayacağımız anlamına gelir.

Adım 5: Harici Kesme Kodu Yazma (Boşluk Döngüsü ()) (adım-3)

Normalde bu kodda Döngüde herhangi bir şey yapmıyoruz.Ancak kod aracılığıyla her türlü görevi ekleyebilirsiniz.

void loop ()

{

// Görevinizi ekleyin

}

Adım 6: Harici Kesme Kodu Yazma (Void Blink ()) (adım-4)

Şimdi, kesme "yanıp sönme" fonksiyonu yazacağız.Bu bir kesme fonksiyonu olduğundan, bu fonksiyonda delay () ve millis () kullanamayız. Ancak, sadece delayMicroseconds () kullanabiliriz.

geçersiz yanıp sönme ()

{

digitalWrite (13;! digitalRead (13)); // Pim 13'teki LED'i aç / kapat

}

Adım 7: Harici Kesme Kodu Yazma (Nihai Kod) (adım-5)

geçersiz kurulum ()

{

pinMode (13, ÇIKIŞ);

attachInterrupt (0, yanıp sönüyor, DÜŞEN);

}

void loop ()
{

// Görevinizi ekleyin

}

geçersiz yanıp sönme ()

{

digitalWrite (13;! digitalRead (13)); // Pim 13'teki LED'i aç / kapat

}

İlgi̇li̇ Makaleler