ESP32 Dev Kit V1を使用していてボード上のBOOTボタンと青色LEDを使用したいと思って、行ってみた結果です。
BOOTボタンはGPIO0、ボード上青色LEDはGPIO2となっているようです。
これを利用してボタンを押すたびにLEDがついたり消えたりする(オルタネイト)コードを書きました。簡単なものですが一応載せときます。
#define BOOT_SW 0 //DevKit上のBOOTボタン
#define LED 2 //DevKit上の青色LED
int Button_flag = 1; //スイッチの状態、押されていない状態で1・押された状態で0
int oldButton_flag = 1; //前のButton_flag
int LED_flag = 0; //LEDがついているかどうか、消灯が0・点灯で1
void setup() { //一番最初に一回だけ実行される処理
pinMode(BOOT_SW,INPUT_PULLUP);
pinMode(LED,OUTPUT);
}
void loop() { //繰り返し行われる処理
oldButton_flag = Button_flag;
Button_flag = digitalRead(BOOT_SW); //ボタンの状態の読み取り
if (Button_flag ==0 && oldButton_flag == 1){ //押された時の検知
if (LED_flag == 0){ //LEDが消えていた時
digitalWrite(LED, HIGH); //LEDを点灯
LED_flag = 1;}
else if(LED_flag == 1){ //LEDがついている時
digitalWrite(LED, LOW); //LEDを消灯
LED_flag = 0;}
}
}
なお、ESP32に電源を投入した直後やリッセットボタンを押す直前にBOOTボタンを押すともちろん書き込みモードに入ります。