Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

M5stackのEEPROMを消す

の続き。
このままだと電源を再投入しようがファームを書き換えようがEEPROMが消えないので上書きリセットの方法を実装します

実際のところ

まずsetup関数より先に二つの関数を追加

// EEPROMをクリアする関数
void clearEEPROM() {
  for (int i = 0; i < ROMSIZE; i++) {
    EEPROM.write(i, 0xFF);
  }
  EEPROM.commit();
}

// デバイスを再起動する関数
void restartDevice() {
  ESP.restart();
}

loop関数の中に

void loop() {
  // ボタン操作でデバイスIDを変更
  M5.update();

  //...

  // BtnBを押下した際にEEPROMをクリアして再起動
  if (M5.BtnB.wasReleased()) {
    M5.Lcd.fillScreen(BLACK);
    M5.Lcd.setCursor(0, 0);
    M5.Lcd.println("Clearing EEPROM...");
    clearEEPROM();
    M5.Lcd.println("Restarting...");
    delay(2000);  // メッセージを表示するための遅延
    restartDevice();
  }
}