外部信号割り込み

ESP32の外部信号割り込み(外部信号の変化に応じてESP32に割り込みをかける)はすべてのGPIOピンが対応しています。割り込み設定関数は、attachInterrupt(GPIOPin, ISR, Mode)です。

  • attachInterrupt(GPIOPin, ISR, Mode)
    • 第一引数:GPIOPinー> GPIOピン番号を指定
    • 第二引数:ISR  ー> 割り込み処理を行う関数
    • 第三引数:Modeは 
      • LOW   ー> Lowになったら
      • HIGH   ー> HIGHになったら
      • CHANGE ー> 状態が変わったら
      • FALLING ー> クロックの立ち下がり
      • RISING  ー> クロックの立ち上がり

割込みを停止するには、detachInterrupt(GPIOPin); を使います。

サンプルプログラム

GPIO13を割り込み入力に設定してGPIO4で割り込みがかかる度にLEDが点灯、消灯するプログラムです。

samp.ino

#include "Arduino.h"

#define int_pin   13
#define LED_pin    4

void setup() 
{
    pinMode(LED_pin, OUTPUT);
    digitalWrite (LED_pin, LOW) ;

    pinMode(int_pin, INPUT_PULLUP);
    attachInterrupt(int_pin, blink_LED, FALLING);
}

void blink_LED()
{
    digitalWrite (LED_pin, !digitalRead(LED_pin)) ;
}

void loop() 
{
    delay(10);
}