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が働くたびにリセットされたくなかったのでグローバル変数にしてあります。