pdf-icon

Arduino入門

2. デバイス&サンプル

DinMeter バッテリー残量取得関連データ

DinMeter のバッテリー残量関連 API とサンプルプログラム。

サンプルプログラム

cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
#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();
}

アップロードが完了すると以下のような効果が確認できます

On This Page