03.T-Watchのバッテリー残量表示


03.T-Watchのバッテリー残量表示

説明

T-Watch 2020v3のバッテリー残量(%)を画面右上に表示します。

Arduino-IDE > ファイル > スケッチ例 > TTGO TWatch Library > BasicUnit > AXP20x_ADC > AXP20x_ADC.ino
を参照しました。
%値は、getBattPercentage();
充電中は、isChargeing();
によります。

表示は、バッテリー残量(%)が
  0~ 20%の時、赤字
 21~ 40%の時、黄色
 41~ 80%の時、緑字
 81~100%の時、白字
で、充電中の時は、
 水色の%値と"充"の表示
です。

スケッチ


// BT.ino
// バッテリー残量表示
#define LGFX_AUTODETECT         // 機種の自動認識
#include <LovyanGFX.hpp>        // ヘッダをinclude
#include <LGFX_AUTODETECT.hpp>  // クラス"LGFX"を用意
static LGFX lcd;                // LGFXのインスタンスを作成
#define LILYGO_WATCH_2020_V3    // T-Watch2020v3を使用
#include <LilyGoWatch.h>        // LilyGoWatchを使用
TTGOClass *ttgo;                //
AXP20X_Class *power;            // 電源管理 AXP202

void SetFont() {                            // Font等初期化関数
  ttgo = TTGOClass::getWatch();             // ttgoに略します
  ttgo->begin();                            // 本体の初期化
  lcd.init();                               // LCDの初期化
  lcd.setRotation(2);                       // 画面回転 0-3 (4-7で上下反転)
  lcd.setBrightness(128);                   // バックライト輝度 0-255(実際は256通りの輝度ではない)
  lcd.fillScreen(TFT_BLACK);                // 全画面黒
  lcd.setFont(&fonts::lgfxJapanGothic_28);  // 固定幅ゴシック体 8,12,16,20,24,28,32,36,40
  lcd.setTextColor(TFT_GREEN, TFT_BLACK);   // (緑字,黒地)
  lcd.setTextSize(1);                       // 文字サイズの倍数
  lcd.setTextWrap(true);                    // 自動折返し
}

void printBT() {                                // バッテリー残量表示関数
  lcd.setCursor(185, 0);                        // カーソル位置
  lcd.setTextSize(0.7);                         // 文字サイズ(倍)
  uint8_t per = power->getBattPercentage();     // 電池%測定
  if (power->isChargeing()) {                   // 充電中の時
    lcd.setTextColor(TFT_CYAN, TFT_BLACK);      // (水字,黒地)
    lcd.print("充");                            // 画面表示
  } else {                                      // 充電中でない時
    lcd.print(" ");                            // 画面表示
    if (per <= 20) {                            // 0-20%時
      lcd.setTextColor(TFT_RED, TFT_BLACK);     // (赤字,黒地)
    } else if (per <= 40) {                     // 21-40%
      lcd.setTextColor(TFT_YELLOW, TFT_BLACK);  // (黄字,黒地)
    } else if (per <= 80) {                     // 41-80%時
      lcd.setTextColor(TFT_GREEN, TFT_BLACK);   // (緑字,黒地)
    } else {                                    // 81-100%時
      lcd.setTextColor(TFT_WHITE, TFT_BLACK);   // (白字,黒地)
    }
  }
  lcd.printf("%3d%%", per);  // 電池%表示
  lcd.setTextSize(1);        // 文字サイズを戻す
}

void setup() {
  SetFont();                    // Font等初期化関数へ
  power = ttgo->power;          // 簡単に書けるようにオブジェクトを受取る
  lcd.setCursor(20, 50);        // カーソル位置
  lcd.print("バッテリー残量");  // 表示
}
void loop() {
  printBT();    // バッテリー残量表示関数へ
  delay(5000);  // 5秒待つ
}
* flash memory(6.5Mbyte)のうち、スケッチが12%使用。RAM(4.5Mbyte)のうち、global変数が0%使用、local変数で4.5Mbyte使用可能。(1000byte=1kbyteで計算)