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が点灯、消灯するプログラムです。
#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);
}