NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(detachInterrupt関数の使い方)

detachInterrupt関数

 Arduino IDEで使用するdetachInterrupt関数は、一度設定した外部割込みを停止します。
 
 
使用例
 Arduino IDEで使用するdetachInterrupt関数の使用例は以下の通りです。
 試しにこのプログラムを実行すると、0番ピンがLOWの時は1番ピンに電圧変化が有った時刻(マイコンが起動してから何ms経過したか)をPCのシリアルモニター上に表示します。 0番ピンがHIGHの時は1番ピンに電圧の変化が有っても経過時間は更新されなくなります。
volatile unsigned long Val;

void setup() {
  attachInterrupt(digitalPinToInterrupt(0), Toggle, CHANGE);//ピン割込時実行
  attachInterrupt(digitalPinToInterrupt(1), In, CHANGE);       //ピン割込時実行
  Serial.begin(9600);             //9600bpsでシリアルポートを開く
}

void loop() {
  Serial.print(Val);                 //最後に割込みピンに変化が有った時刻を出力します
  delay(1000);                      //1000ms(1秒)待ちます
}

void In() {
  Val = millis();                     //ピンの状態が変化した時の時刻を変数に代入する
}

void Toggle() {
  if (digitalRead(1) == LOW) { //もし1番ピンがLOWなら割り込みを許可する
    attachInterrupt(digitalPinToInterrupt(1), In, CHANGE);
  } else {                               //もし1番ピンがHIGHなら割り込みを許可しない
    detachInterrupt(digitalPinToInterrupt(1));
  }
}
イメージ 1
図1:プログラム例
 
detachInterrupt(interrupt)のパラメータ 
interrupt: 停止したい割り込みの番号 、ArduinoUNOの場合は0または1
※その他Arduinoの場合はこちら「ピン配置図」をご覧ください
 
 
イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る