基本ロジックが同じだがデバイスIDが違う場合……というケースの対処方法
実際のところ
#include <M5Stack.h> #include <EEPROM.h> // デバイスIDを保存するEEPROMアドレス #define DEVICE_ID_ADDRESS 0 // 書き込みを行うEEPROMの確保サイズ #define ROMSIZE 4 // デバイスID(初期値は0x01としますが、変更可能) uint32_t deviceId = 0x01; void setup() { M5.begin(); M5.Power.begin(); // EEPROMからデバイスIDを読み込む EEPROM.begin(ROMSIZE); deviceId = EEPROM.readUInt(DEVICE_ID_ADDRESS); if (deviceId == 0xFFFFFFFF) { // 未設定の場合 deviceId = 0x01; // デフォルト値 EEPROM.writeUInt(DEVICE_ID_ADDRESS, deviceId); EEPROM.commit(); } M5.Lcd.setTextSize(2); M5.Lcd.printf("Device ID: 0x%02X", deviceId); } void loop() { // ボタン操作でデバイスIDを変更 M5.update(); if (M5.BtnA.wasReleased()) { deviceId = (deviceId + 1) & 0xFF; // 0x01 ~ 0xFF の範囲で循環 EEPROM.writeUInt(DEVICE_ID_ADDRESS, deviceId); EEPROM.commit(); M5.Lcd.fillScreen(BLACK); M5.Lcd.setCursor(0, 0); M5.Lcd.printf("New ID: 0x%02X", deviceId); delay(1000); } }