オンボードペリフェラルの使用方法
このページでは、0.96'' IPS Display の各オンボードペリフェラル向けに、単体で動作する機能別デモをまとめています。各セクションはそれぞれ独立しているため、自分のユースケースに合うものだけを選んで読めばよく、他を読む必要はありません。
このページのデモ GIF は、短く収めるために再生速度を上げています。
このページのすべてのデモは、Getting Started で説明している Seeed nRF52 Boards (1.1.13) に加え、以下の手順で手動インストールする Seeed_GFX2 ライブラリが必要です。
- ライブラリマネージャ — Sketch > Include Library > Manage Libraries... に進み、次を検索してインストールします:
| Library | Search Keyword | Author | Required by |
|---|---|---|---|
| Seeed Arduino LSM6DS3 | Seeed Arduino LSM6DS3 | Seeed Studio | Quicksand, Wake |
- Seeed_GFX2(手動インストール) — このライブラリはライブラリマネージャには登録されていないため、手動でインストールする必要があります:
ステップ 1. 上のボタンをクリックして、Seeed_GFX2 v1.0.0 を ZIP ファイルとしてダウンロードします(チュートリアルの再現性を保つため、リリースタグに固定されています)。あるいは、Seeed-Studio/Seeed_GFX2 からリポジトリを clone しても構いません。
ステップ 2. Arduino IDE で Sketch > Include Library > Add .ZIP Library... を開き、ダウンロードした ZIP を選択します。IDE は library.properties を読み取り、正しい Seeed_GFX2 フォルダに自動的にインストールします — 展開したフォルダ名を変更する必要はありません。(代わりに手動インストールする場合は、アーカイブを解凍し、展開されたフォルダ名を Seeed_GFX2 に変更してから Documents/Arduino/libraries/ に配置します。)
ステップ 3. 新しいライブラリが認識されるよう、Arduino IDE を再起動します。
- Seeed_GFX2 は、
Board+Panel Configというレイヤ構造に基づいて構築された Seeed Studio 製のグラフィックスライブラリです。各デモは、display.begin<Board_XIAO_0inch96_LCD<38, 37>, Config_Seeed_0inch96_LCD_ST7789>()という 1 行の呼び出しでディスプレイを初期化します。ここで Board テンプレートがピンマップ(CS/DC/SCK/MOSI/RST/BL)を保持し、Panel Config が 80×160 の解像度、BGR カラー順序、回転 2 を組み込みます。Seeed_GFX2 は、このパネルを安全側の 10 MHz ハードウェア SPI で駆動し、旧来のデモでソフトウェア SPI を必要としていたシグナルマージンの問題を回避します。 - 0.96'' IPS Display には タッチコントローラと SD カードスロットが搭載されていない ため、タッチや SD 用のライブラリは不要です。
デモコードの入手方法
このページのすべてのデモは、Display-Gadgets リポジトリ内の code_GFX2/Function/ ディレクトリにあります。各デモは 1 つの .ino スケッチを含むフォルダになっています。GitHub の Web 画面から .ino のソースだけをコピーするのではなく、必ずフォルダ全体をダウンロードしてください。
オプション A — リポジトリを ZIP でダウンロード(推奨):
- github.com/Seeed-Projects/Display-Gadgets を開き、Code > Download ZIP をクリックして、任意の場所にアーカイブを展開します。
code_GFX2/Function/に移動し、各デモの Code location 行に示されているフォルダを開きます。たとえば、このボード向けの GraphicTest デモはcode_GFX2/Function/096_nRF52840/xiao_nrf52840_096_graphictest/にあります。.inoファイルをダブルクリックして Arduino IDE で開きます。
オプション B — git clone:
git clone https://github.com/Seeed-Projects/Display-Gadgets.git
その後、clone した code_GFX2/Function/... フォルダからデモの .ino ファイルを開きます。
画面表示 — GraphicTest
このデモは、0.96 インチ ST7789 IPS パネル(80×160)に対して、カラーバー、線、矩形、円、三角形、角丸矩形、テキスト、ピクセルグラデーションを含むフルグラフィックスベンチマークを実行します。画面の配線が正しく行われているか、すべての描画呼び出しが期待どおり動作するかを確認するために使用できます。
コードの場所: code_GFX2/Function/096_nRF52840/xiao_nrf52840_096_graphictest/
動作の仕組み
このスケッチは Seeed_GFX2 を介して ST7789 IPS パネルを初期化し、その後 10 種類のグラフィックスプリミティブを順番に実行し、それぞれの実行時間を micros() で計測してシリアルモニタに出力します。
ディスプレイは次の 1 行のテンプレート呼び出しで初期化されます:
display.begin<Board_XIAO_0inch96_LCD<38, 37>,
Config_Seeed_0inch96_LCD_ST7789>();
Board テンプレートはピンマップを保持しており、CS=D2、DC=D3、SCK=D8、MOSI=D10 です。また、その <RST, BL> テンプレートパラメータには生の GPIO 番号を指定するため、<38, 37> は RST=GPIO38、BL=GPIO37 を意味します。Panel Config は 80×160 の解像度、BGR カラー順序、回転 2 を組み込んでおり、driver.h や手動の invertDisplay() 呼び出しは不要です。Seeed_GFX2 はパネルを安全側の 10 MHz ハードウェア SPI で駆動し、旧来のデモでソフトウェア SPI を強いられていたシグナルマージンの問題を回避します。
カラー順序(BGR パネル)。 この 0.96 インチパネルは物理的に赤と青のチャネルが入れ替わっています。デモではそれに合わせて色をエイリアスしており(たとえば、信号レベルでの赤 0xF800 は画面上では青として表示されます)、自分で描画コードを書く場合も、デモのカラ―エイリアスを使うか BGR 順序を考慮してください。そうしないと、赤と青が入れ替わって表示されます。
デモの実行方法
ステップ 1. Arduino IDE で xiao_nrf52840_096_graphictest.ino を開きます。
ステップ 2. Tools > Board > Seeed nRF52 Boards > Seeed XIAO nRF52840 Plus と正しい Port を選択します。
ステップ 3. Upload をクリックします。
ステップ 4. Tools > Serial Monitor(115200 ボー)を開きます。各テストのタイミング出力が表示されるはずです:
=== XIAO nRF52840 Plus 0.96 graphic test ===
LCD: 80x160
Color bars: 13.67 ms
Lines: 1712.89 ms
Fast lines: 25.39 ms
Rectangles: 23.44 ms
Filled rects: 47.85 ms
Circles: 207.03 ms
Triangles: 166.99 ms
Round rects: 48.83 ms
Text: 539.06 ms
Pixel gradient: 1907.23 ms
Graphic test finished.
画面上では、各テストパターンが約 1 秒ずつ表示され、その後次のパターンに切り替わります。すべてのテストが完了すると、「Done! All tests OK」という画面が表示されます。
期待される結果

スケッチがすべてのパターンを実行し終えると、画面に「Done!」メッセージが表示されます。テストを再度実行するには、ボードをリセットしてください。
IMU
0.96'' IPS Display には、D4/D5 の I2C に接続されたオンボード 6 軸 IMU(LSM6DS3)が搭載されています。D14 上のモーション割り込みラインは、ハードウェアウェイクアップとジェスチャ検出をサポートします。
以下の 2 つのデモはいずれも、I2C アドレス 0x6A の LSM6DS3 を使用します。
デモ 1: Electronic Quicksand
このデモでは、画面をインタラクティブな流体シミュレーションに変えます — オンボードの 6 軸 IMU で計測した重力に従って流れ、落ち着く金色の砂粒です。ボードを傾けると、砂がリアルタイムにその方向へと移動します。
コードの場所: code_GFX2/Function/096_nRF52840/xiao_nrf52840_096_electronic_quicksand/
動作の仕組み
このシミュレーションでは、80×160 の画面上に 13×26 の占有グリッド を重ね、その各セルは 6×6 ピクセルになっています。グリッド内には約 65 個の粒子 が配置されており、それぞれ位置、速度、および金色のカラ―グラデーションを持ちます。
IMU は Seeed Arduino LSM6DS3 ライブラリを使用して I2C(D4/D5)経由でアドレス 0x6A から読み取られます。生の加速度値はローパスフィルタで処理され、重力ベクトルを導き出すために使用されます。ボードを傾けると:
- 重力ベクトルの更新 — 加速度センサーデータは指数移動平均で平滑化され、ジッターを防ぎます。
- 粒子の速度 — 各粒子は重力ベクトルの方向に加速し、減衰と、流れの中での深さに基づく粒子ごとの可動性係数が適用されます。
- セルの占有 — 流れの中でより深い位置(重力に対して「底」に近い)にある粒子は可動性が低くなり、リアルな詰まり(パッキング)効果を生み出します。
- 差分レンダリング — 粒子が出入りしたセルのみを再描画することで、SPI トラフィックを最小限に抑え、小型パネル上でもスムーズなアニメーションを維持します。
表面付近の粒子は自由に流れ(高い可動性)、より深く埋もれた粒子は密に詰まり(低い可動性)、実際の砂の挙動を模倣します。
デモの実行
Step 1. Arduino IDE で xiao_nrf52840_096_electronic_quicksand.ino を開きます。
Step 2. ボードとポートを選択し、Upload をクリックします。
Step 3. アップロードが完了すると、画面の下部が金色の粒子で満たされます。ボードをさまざまな方向に傾けると、砂が重力に引かれているかのように流れます。
Step 4. Tools > Serial Monitor(115200 ボー)を開き、初期化を確認します:
LCD w=80 h=160
=== Electronic Quicksand 0.96 ===
imu.begin=0
期待される結果

ボードを傾けると、金色の砂粒が滑らかに流れます。水平に保つと、砂は画面の下部に落ち着きます。ボードを 90 度回転させると、1 秒以内に砂が新しい「底」に流れ込みます。
デモ 2: Raise to Wake
このデモでは、IMU に内蔵されたモーション割り込みを D14 で利用し、画面のスリープ/ウェイクシステム を実装します。設定可能なアイドル時間後に画面が自動的にオフ(バックライトオフ + nRF52 System ON スリープ)になり、デバイスを持ち上げたり動かしたりすると即座に復帰します。
コードの場所: code_GFX2/Function/096_nRF52840/xiao_nrf52840_096_wakeup/
動作の仕組み
このデモでは、LSM6DS3 の 組み込みウェイクアップイベント検出器 を使用します。これは、加速度センサーデータを内部で監視し、モーションが設定可能なしきい値を超えたときに INT1 ピン(このボードでは D14 に接続)をアサートするハードウェア機能です。これにより、MCU は加速度センサーを継続的にポーリングする必要がありません。
IMU 設定(LSM6DS3):
| レジスタ | 値 | 目的 |
|---|---|---|
CTRL3_C | 0x44 | ブロックデータ更新(BDU)+ オートインクリメント |
CTRL1_XL | 0x40 | 加速度センサー @ 104 Hz、±2g |
TAP_CFG | 0x80 | 組み込み割り込みを有効化 |
WAKE_UP_THS | 0x05 | ウェイクアップしきい値(中〜低感度) |
WAKE_UP_DUR | 0x00 | 継続時間フィルタなし(応答性の高いウェイク) |
MD1_CFG | 0x20 | ウェイクアップを INT1 にルーティング |
スリープ/ウェイクの流れ:
- アクティブ状態 — 画面がオンで、バックライトは最大輝度、UI は 250 ms ごとにリアルタイム IMU データで更新されます。
- 自動スリープ — 8 秒間操作がないと、スケッチはバックライトをオフにし、「Sleep — Move to wake」というメッセージを表示して、nRF52 System ON スリープ(RAM を保持する低消費電力モード)に入ります。IMU のウェイク割り込み(D14)は起動時にすでに設定されているため、スリープ中もモーション検出は有効のままです。
- ウェイクアップ — ユーザーがボードを持ち上げると、IMU がモーションを検出して D14 を HIGH にアサートします。nRF52840 は System ON スリープから復帰し、バックライトを再点灯して UI を再描画します。System ON スリープでは RAM が保持されるため、LCD と IMU の状態は維持されます。
手動テストボタン:
| ボタン | ピン | 動作 |
|---|---|---|
| USR1 | D6 | 強制スリープ |
| USR2 | D7 | 強制ウェイク |
デモの実行
Step 1. Arduino IDE で xiao_nrf52840_096_wakeup.ino を開き、ボードとポートを選択して Upload をクリックします。
Step 2. 画面には電源状態、モーションデータ、カウントダウンを備えたコンパクトなダッシュボードが表示されます。ボードを静置すると、8 秒後に自動的にスリープに入ります。
Step 3. ボードを持ち上げるか、軽く振ると、画面が即座に復帰します。
Step 4. Tools > Serial Monitor(115200 ボー)を開き、起動およびスリープ/ウェイクの遷移を確認します:
=== XIAO nRF52840 Plus 0.96 IMU Wake Demo ===
[LCD] OK 0.96 ST7789 80x160
[IMU] LSM6DS3 begin=0
[IMU] CTRL1_XL = 0x40
[IMU] TAP_CFG = 0x80
[IMU] MD1_CFG = 0x20
[IMU] WAKE_UP_THS = 0x05
[IMU] D14 wake interrupt OK
[IMU] D14 pin state = 0
[BOOT] done. Screen should be on.
[SLEEP] screen off, entering System ON sleep
[SLEEP] loops=1 D14=0 awake=N
[SLEEP] loops=1025 D14=0 awake=N
[WAKE] D14 pin HIGH (polled)
[WAKE] src=0xA
[WAKE] reason=IMU_D14 wakeCount=8 sleptMs=4142 sleepLoops=1936 wakeSrc=0xA
[WAKE] src=0x0
sleptMs、sleepLoops、wakeSrc フィールドは、ボードがどれくらいの時間スリープしていたか、どのジェスチャーでウェイクしたかによって変化します。
期待される結果

スリープしていない間、画面にはリアルタイムのモーションデータが表示されます。8 秒間静止すると画面が暗くなり、nRF52840 は低消費電力スリープに入ります。デバイスを持ち上げると画面が即座に復帰し、ウェイクカウンタがインクリメントされます。
マイク & スピーカー — フラッシュレコーダー
このデモでは、0.96'' IPS Display を小さなボイスレコーダーに変身させます。USR1 を押すと、オンボードの PDM マイクから nRF52840 の内部フラッシュファイルシステムに短いクリップを録音し、USR2 を押すと外部 I2S アンプを通して再生します。
0.96'' IPS Display の PDM マイクは、他の XIAO ディスプレイボードと同じピンに接続されています:
| ピン | 信号 | 機能 |
|---|---|---|
| D0 | PDM_CLK | マイクへの PDM クロック出力 |
| D1 | PDM_DATA | マイクからの PDM データ入力 |
コードの場所: code_GFX2/Function/096_nRF52840/xiao_nrf52840_096_flash_record/
ハードウェアセットアップ
再生側には外部 I2S アンプが必要です。このデモは、0.96'' IPS Display の I2S テストパッドに配線された MAX98357A ブレークアウト用に作成されています:
| XIAO ピン | I2S 信号 | MAX98357A |
|---|---|---|
| 3V3 | 電源 | VIN |
| GND | グラウンド | GND |
| D11 | I2S_SD(データ出力) | DIN |
| D12 | I2S_SCK(ビットクロック) | BCLK |
| D13 | I2S_WS (word select) | LRC |
アンプとスピーカーの配線を行う前に、USB 電源を必ず切断してください。スピーカーは MAX98357A の SPK+ および SPK- 端子に接続し、どちらのスピーカー線も GND には接続しないでください。
0.96'' IPS Display には SD カードスロットがないため、このデモでは nRF52840 の 内部フラッシュファイルシステム(InternalFS)に録音します。InternalFS は約 28 KB で、このチュートリアルでは 16 kHz で 11,200 個のモノラルサンプルを録音し、約 22 KB の PCM オーディオと、およそ 0.7 秒の録音時間になります。
動作の仕組み
ディスプレイ:
画面は Seeed_GFX2 によって、Board_XIAO_0inch96_LCD<38, 37> と Config_Seeed_0inch96_LCD_ST7789(80×160、BGR、回転 2)を用いて、10 MHz のハードウェア SPI 経由で駆動されます。
録音(USR1):
- スケッチは 16 kHz、シングルチャネル で PDM ペリフェラルを起動し、ISR(
onPdmData)を通じて 11200 サンプルのバッファ(≈ 0.7 秒、≈ 22 KB の PCM)に生サンプルを取り込みます。 - 進行状況画面に、録音のパーセンテージと経過時間がリアルタイムで表示されます。
- バッファが一杯になると、スケッチは 44 バイトの WAV ヘッダを先頭に付加し、ファイル
/REC_RAW.WAVを InternalFS に書き込みます。
再生(USR2):
- WAV ファイルを InternalFS から読み戻します。
- スケッチは nRF52840 の I2S ペリフェラルを マスターモード、32× 比(≈ 16 kHz LRCK)で駆動し、MAX98357A に 16 ビットステレオフレームを 0.75× ゲイン で送信します(各モノラルサンプルは両チャネルに複製されます)。
- ダブルバッファ(ピンポン)方式により、クリップが終了するまでオーディオストリームが途切れないようにします。
ボタン:
| Button | Pin | Action |
|---|---|---|
| USR1 | D6 | 新しいクリップを録音(前のクリップを上書き) |
| USR2 | D7 | 保存済みクリップを再生 |
PDM、Adafruit TinyUSB、Adafruit LittleFS、および InternalFileSystem ライブラリは Seeed nRF52 Boards 1.1.13 に同梱されています — Library Manager から別バージョンをインストールしないでください。このチュートリアルでは SdFat は使用しません。
デモの実行
ステップ 1. Arduino IDE で xiao_nrf52840_096_flash_record.ino を開きます。
ステップ 2. Tools > Board > Seeed nRF52 Boards > Seeed XIAO nRF52840 Plus と正しい Port を選択します。
ステップ 3. Upload をクリックします。
ステップ 4. 画面に「Recorder」のアイドル画面が表示されます。USR1 を押すと、録音中に赤い「REC」進行バーが伸びていきます。完了すると WAV を保存し、アイドル画面に戻ります。
ステップ 5. USR2 を押すと、接続された MAX98357A スピーカーからクリップが再生され、画面には「Playing...」と表示されます。
期待される結果

USR1 を押すと、赤い進行バーが 100% まで満たされ、クリップが保存されます。USR2 を押すと、録音内容が MAX98357A を通して再生されます。WAV ファイルは InternalFS に保存され、リセットや電源のオン・オフ後も利用可能です。USR1 で再度録音すると、前のファイルは上書きされます。
このチュートリアルは、XIAO nRF52840 Plus、0.96'' IPS Display、MAX98357A アンプ、および外部スピーカーを用いてコンパイル、書き込み、およびハードウェアテスト済みです。
ユーザーボタン
0.96'' IPS Display には、XIAO nRF52840 Plus に接続された 2 つの物理プッシュボタン があります:
| Button | Pin | Logic | Silkscreen Label |
|---|---|---|---|
| USR1 | D6 | アクティブ Low(押下 = LOW) | USR1 |
| USR2 | D7 | アクティブ Low(押下 = LOW) | USR2 |
1.14'' IPS Display と異なり、0.96'' IPS Display には 3 つ目のボタンがありません(D19 上の USR3 はありません)。また、専用のボタン用ブレークアウトパッドもありません。
ボタンの読み取り
オンボードデモでは、ボタンは内部プルアップ付きで設定されています:
const int USR1 = D6;
const int USR2 = D7;
void setup() {
pinMode(USR1, INPUT_PULLUP);
pinMode(USR2, INPUT_PULLUP);
Serial.begin(115200);
}
void loop() {
if (digitalRead(USR1) == LOW) {
Serial.println("USR1 (D6) pressed");
delay(200); // simple debounce
}
if (digitalRead(USR2) == LOW) {
Serial.println("USR2 (D7) pressed");
delay(200);
}
}
割り込みによるデバウンス
メインループをブロックせずに、応答性が高くデバウンスされたボタン処理を行うには、ピン変化割り込みを使用できます:
volatile bool btn1Flag = false;
volatile bool btn2Flag = false;
void btn1Isr() { btn1Flag = true; }
void btn2Isr() { btn2Flag = true; }
void setup() {
pinMode(D6, INPUT_PULLUP);
pinMode(D7, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(D6), btn1Isr, FALLING);
attachInterrupt(digitalPinToInterrupt(D7), btn2Isr, FALLING);
}
void loop() {
if (btn1Flag) {
btn1Flag = false;
delay(30); // debounce settling time
if (digitalRead(D6) == LOW) {
// handle USR1 press
}
}
if (btn2Flag) {
btn2Flag = false;
delay(30);
if (digitalRead(D7) == LOW) {
// handle USR2 press
}
}
}
ファクトリーダッシュボードでのデフォルト動作
プリインストールされているファクトリーファームウェアでは、ボタンは次のように割り当てられています(自分のコードで上書きできます):
| Button | Pin | Action |
|---|---|---|
| USR1 | D6 | 画面の明るさを切り替え(100% → 75% → 50% → 25% → 100%) |
| USR2 | D7 | 画面のバックライトを ON/OFF 切り替え |
画面がオフ(USR2 による切り替え)になっているときに、再度 USR2 を押すと、以前の 0 以外のレベルに復帰します。
バッテリーステータス
このデモでは、0.96'' IPS Display 上に、充電レベルと充電状態を示すバッテリーアイコンでバッテリーステータスを表示します。LiPo バッテリーが物理的に接続されているかどうかを検出し、USB PWR(バッテリーなし)、パーセンテージ(バッテリーのみ)、充電中(USB + バッテリー)の 3 つの状態のいずれかを表示します。
0.96'' IPS Display には 専用のバッテリー ADC ピンがありません(D16 は NC)— バッテリー電圧は XIAO nRF52840 Plus モジュールの内部分圧回路を通して測定されます。
コードの場所: code_GFX2/Function/096_nRF52840/xiao_nrf52840_096_battery_status/
動作の仕組み
ディスプレイ:
画面は Seeed_GFX2 によって、Board_XIAO_0inch96_LCD<38, 37> と Config_Seeed_0inch96_LCD_ST7789(80×160、BGR、回転 2)を用いて、10 MHz のハードウェア SPI 経由で駆動されます。
バッテリー回路:
nRF52840 Plus は、3 本の GPIO ピン を使用して完全なバッテリーモニタリングシステムを構成します:
| Signal | nRF52840 Pin | Function |
|---|---|---|
READ_BAT | P0.14 | バッテリー電圧分圧のイネーブル。アクティブ Low — 分圧を有効にするには LOW にし、その後は電力節約のため HIGH(高インピーダンス)に戻します。 |
VBAT_ADC | PIN_VBAT (AIN7 / P0.31) | 分圧されたバッテリー電圧を読み取るアナログ入力。 |
CHG | P0.17 | 充電ステータスインジケータ。アクティブ Low — 充電器が接続されバッテリーが充電中のとき LOW を読み取ります。 |
検出:
USB-C 接続時には、静的な VBAT 電圧だけではバッテリーが存在するかどうかを判断できません — バッテリが接続されていなくても、充電器の BAT ノードは実際のリチウムイオンセルのように見えることがあります。そのため、このデモではまず USB のみのベースライン を学習し、その後、VBAT の持続的な低下が見られたときにのみバッテリー挿入を確定し、ノイズの多い/跳ねた読み取りと ~CHG の HIGH への遷移が組み合わさったときに取り外しを確定します。これはファクトリーダッシュボードの検出ロジックを反映したものです。
アイコン状態:
- バッテリーなし — 赤いバツ印付きのグレーの輪郭バッテリーで、USB PWR と表示。
- バッテリーあり — 白い輪郭のバッテリーに色付きのフィル(パーセンテージに応じて緑 / 黄 / 赤)が入り、パーセンテージ と 電圧 がラベル表示されます。
- 充電中 — シアンのフィルと稲妻アイコンで、パーセンテージと電圧がラベル表示されます。
~CHG ピンは、digitalRead() ではなく nRF52840 の 生の GPIO レジスタ(nrf_gpio_cfg_input() と NRF_P0->IN)を通して読み取られます。Arduino API では、ピン番号はボードパッケージのマッピングに従うため、digitalRead(17) は P0.17 ではなく、実際には P0.07(6D IMU の I2C データライン)を読み取ります。ここでの定数 14 と 17 は 生の Nordic P0.x ピン番号(P0.14 と P0.17)であり、これはレジスタ呼び出しが期待しているものと完全に一致します。
このデモでは、工場で較正された499 kΩのローサイド抵抗(分圧比 ≈ 3.004)を使用しており、510 kΩ の公称値ではありません。分圧回路はディスプレイボードではなく、XIAO nRF52840 Plus モジュール自体に内蔵されています。P0.14 のイネーブルピンはアクティブ Lowです:分圧回路を有効にするにはこのピンを LOW に駆動し、その後バッテリーを測定していないときの静止電流消費を最小限に抑えるためにハイインピーダンス(INPUT)に解放します。
デモの実行
ステップ 1. Arduino IDE で xiao_nrf52840_096_battery_status.ino を開きます。
ステップ 2. Tools > Board > Seeed nRF52 Boards > Seeed XIAO nRF52840 Plus と正しい Port を選択します。
ステップ 3. Upload をクリックします。
ステップ 4. 画面を観察します — 現在の状態に応じたバッテリーアイコンが表示されます。LiPo バッテリー(または USB-C ケーブル)を接続・取り外しして、アイコンが 3 つの状態の間で切り替わる様子を確認します。
期待される結果
![]() USB PWR(バッテリーなし) | ![]() Percentage(バッテリーのみ) |
![]() Charging(USB + バッテリー) | ![]() Battery connector(背面) |
バッテリーがない場合、画面には赤いバツ印付きの灰色のバッテリーと USB PWR のラベルが表示されます。LiPo バッテリーを挿入すると、アイコンは色付きの残量表示に切り替わり、パーセンテージと電圧が表示されます。バッテリーが接続されている状態で USB-C を接続すると、充電中を示すために残量表示がシアン色になり、稲妻マークが表示されます。
このデモは、500 ms ごとにシリアルモニタへ診断用の 1 行を出力します。例:
VBAT 3.87V charging 85 spread=5 usb=ON base=4.140 baseValid=Y state=PRESENT filter=STABLE removeCount=0
リソース
- 🗃️[PCB Design Files] XIAO 0.96'' IPS Display (nRF52840) KiCad Project
- 📄[Schematic] XIAO 0.96'' IPS Display (nRF52840) Schematic
- 📦[3D Model] XIAO 0.96'' IPS Display (STEP)
- 📄[Datasheet] 0.96 Inch Display Datasheet
- 💾[Factory Firmware] XIAO 0.96'' IPS Display (nRF52840) Factory Firmware
- [Demo] XIAO Display Board Demo Code — すべての Function デモは
code_GFX2/Function/096_nRF52840/ディレクトリ内にあります
技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます。弊社は、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに応じてお選びいただける、複数のコミュニケーションチャネルをご用意しています。



