Arduino入門
DinMeter のバッテリー残量関連 API とサンプルプログラム。
#include <M5Unified.h>
static constexpr int BAT_PIN = G10; // DinMeter のバッテリー検出ピン
static constexpr float VREF = 3.3f; // ADC 参照電圧
static constexpr int ADC_RESOLUTION = 4095; // 12 ビット分解能 (0~4095)
static constexpr float DIVIDER = 2.0f; // 分圧比
void setup() {
// M5Unified の初期化(Display、ボタン、RTC、電源管理 などを含む)
auto cfg = M5.config();
M5.begin(cfg);
// バッテリーピンの ADC 減衰を設定し、フルスケール読み取りを有効にする
analogSetPinAttenuation(BAT_PIN, ADC_11db);
// Display 初期化
M5.Display.fillScreen(TFT_BLACK);
M5.Display.setTextColor(TFT_WHITE, TFT_BLACK);
M5.Display.setTextSize(2);
}
void loop() {
// 生の ADC 値を読み取る
int raw = analogRead(BAT_PIN);
// 実際の電圧を計算: (raw/4095) * 3.3V * 2
float vb = (raw / float(ADC_RESOLUTION)) * VREF * DIVIDER;
// 電圧を表示
M5.Display.fillScreen(TFT_BLACK);
M5.Display.setCursor(10, 20);
M5.Display.printf("Battery:\n%.2f V", vb);
// 5 秒ごとに更新
delay(5000);
M5.update();
}
アップロードが完了すると以下のような効果が確認できます