Arduinoで外部割り込みを作成する

Adruinoにはいくつかのタイプの割り込みがあります。Interruptは、arduinoが通常のタスクを停止するか、ループを停止し、割り込み機能に移動して特定の割り込み機能タスクを完了するプロセスです。外部割り込みは、外部で作成されます。 。 デジタルピン2とデジタルピン3です。

このピンの信号に変化がある場合、外部割り込みの初期化後。 その後、外部割り込みが作成されます。

ステップ1:外部割り込みピン

Arduino unoには、2つの外部割り込みピンデジタルピン2とデジタルピン3があります。

Arduino Megaには、6つの外部割り込みピン、デジタルピン2、デジタルピン3、デジタルピン21、デジタルピン20、デジタルピン19、およびデジタルピン18があります。

ステップ2:Arduino AttachInterrupt()関数

attachInterrupt()関数は、外部割り込みの作成に使用されます。

構文
attachInterrupt(割り込み、ISR、モード)

attachInterrupt(pin、ISR、mode)(Arduino Dueのみ)

パラメーター

interrupt:割り込みの数(int)

pin:ピン番号(Arduino Dueのみ)

ISR:割り込みが発生したときに呼び出すISR。 この関数はパラメータを取らず、何も返さない必要があります。 この関数は、割り込みサービスルーチンと呼ばれることもあります。mode:割り込みをトリガーするタイミングを定義します。 4つの定数が有効な値として事前定義されています。

(1)LOW:ピンがLowの場合に割り込みをトリガーします。

(2)変更:ピンの値が変更されるたびに割り込みをトリガーします

(3)RISING:ピンがローからハイになったときにトリガーし、

(4)落下:ピンがハイからローになったとき。

Due Boardは以下も可能にします。

HIGHは、ピンがHighの場合に割り込みをトリガーします。 (Arduino Dueのみ)

戻り値:

なし。

これはarduinoページからも見ることができます。Link://www.arduino.cc/en/Reference/AttachInterrup ...

ステップ3:外部割り込みコードの作成(ステップ-1)

目的:aruinoを初期化して、デジタルピン2の外部割り込みを検出します。この外部割り込みを介して、タスクを完了します。タスクは、ピン13のLEDを切り替えることです。オン、その後、外部割り込み13ピンを取得した後、ピンはオフになります。

注意:割り込み関数でdelay()およびmillis()は機能しません。しかし、使用できるのはdelayMicroseconds()のみです。

やってみましょう.......

ステップ4:外部割り込みコードの記述(Void Setup())(ステップ-2)

void setup()では、デジタル13ピンを出力および割り込み関数attatchInterrupt()として初期化する必要があります。

void setup()

{

pinMode(13、OUTPUT);

attachInterrupt(0、blink、FALLING);

}

ここでは、ピン13が出力として宣言されています。attachInterrupt()関数の最初のパラメーターは「0」です。デジタルピン2を外部割り込みとして使用するため、これはゼロです。「blink」は割り込み関数です。モードには4つの状態があり、それらはLOW、CHANGE、RISING、FALLING、およびarduinoがHIGHであるために1つあります。FALLINGを使用します。Arduinoはデジタル信号で動作します。 .FALLINGを使用します。これは、ピン2で立ち下がりエッジ信号を検出するたびに、割り込み機能に移行することを意味します。そして、タスクを完了します。

ステップ5:外部割り込みコードの記述(Void Loop())(ステップ-3)

通常、このコードではループ内では何も行いませんが、コードを介してあらゆる種類のタスクを追加できます。

void loop()

{

//タスクを追加します

}

ステップ6:外部割り込みコードの記述(Void Blink())(ステップ-4)

ここで、割り込み「点滅」関数を作成します。これは割り込み関数であるため、この関数ではdelay()およびmillis()を使用できません。ただし、delayMicroseconds()のみを使用できます。

void blink()

{

digitalWrite(13、!digitalRead(13)); //ピン13のLEDを切り替えます

}

ステップ7:外部割り込みコード(最終コード)の作成(ステップ5)

void setup()

{

pinMode(13、OUTPUT);

attachInterrupt(0、blink、FALLING);

}

void loop()
{

//タスクを追加します

}

void blink()

{

digitalWrite(13、!digitalRead(13)); //ピン13のLEDを切り替えます

}

関連記事