すだちキャンパス

すだちキャンパス

やってみたこと、学んだことなどのメモ。

ArduinoでattachInterrupt関数を使ってみた

こんにちは。
久々にArduinoを触る機会があり、便利な関数を知ったのでそのメモです。

センサが複数ある場合に便利なattachInterrupt関数

attachInterrupt関数は、センサAが反応した時にセンサBと通信したい!といった場合にとても便利な関数です。つまりあるpin番号からの入力を監視して、それに指定した変化が起きた場合にある関数を動かす、といった用途に使用します。
今回は、センサAの電圧が上がった時にセンサBの値を取得する目的で使用しました。

使い方

void setup()の中に記述して使います。
基本的に、attachInterrupt(監視したいpin番号, 動作させる関数, 条件);のように書く様です。
今回書いたコードは以下の通りです。

int calcMove = 0;

void setup() {
  pinMode( 2, INPUT );
  pinMode( 4, INPUT );
  attachInterrupt(4, calculate, FALLING);
  Serial.begin( 9600 );
}

void loop() {   
   
}

void calculate(){
  int val = 0;
  
  val = digitalRead(2);
  calcMove = val * 3 - 1;

  Serial.println(calcMove);
}

ちなみに、ここでcalcMoveはattachInterruptが働くたびにリセットされたくなかったのでグローバル変数にしてあります。