オンボードペリフェラルの使用方法
このページでは、0.96'' IPS Display の各オンボードペリフェラル向けに、単体で動作する機能別デモをまとめています。各セクションはそれぞれ独立しているため、他を読まずに自分のユースケースに合うものだけを選んで使うことができます。
このページのデモ GIF は、短く収めるために再生速度を上げています。
このページのすべてのデモは、Getting Started で説明している Seeed nRF52 Boards (1.1.13) に加え、以下の手順で手動インストールする Seeed_GFX2 ライブラリが必要です。
- Library Manager — Sketch > Include Library > Manage Libraries... に移動し、次を検索してインストールします:
| Library | Search Keyword | Author | Required by |
|---|---|---|---|
| Seeed Arduino LSM6DS3 | Seeed Arduino LSM6DS3 | Seeed Studio | Quicksand, Wake |
- Seeed_GFX2 (Manual Installation) — このライブラリは Library Manager にはないため、手動でインストールする必要があります:
Step 1. 上のボタンをクリックして、Seeed_GFX2 v1.0.0 を ZIP ファイルとしてダウンロードします(チュートリアルの再現性を保つため、リリースタグに固定されています)。あるいは、Seeed-Studio/Seeed_GFX2 からリポジトリを clone しても構いません。
Step 2. Arduino IDE で Sketch > Include Library > Add .ZIP Library... を開き、ダウンロードした ZIP を選択します。IDE は library.properties を読み取り、正しい Seeed_GFX2 フォルダに自動的にインストールします — 展開したフォルダ名を変更する必要はありません。(代わりに手動インストールする場合は、アーカイブを解凍し、展開されたフォルダ名を Seeed_GFX2 に変更してから Documents/Arduino/libraries/ に配置します。)
Step 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 用のライブラリは不要です。
デモコードの入手
このページのすべてのデモは、code_GFX2/Function/ ディレクトリ以下の Display-Gadgets リポジトリに含まれています。各デモは 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 location: 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 順序を考慮してください。そうしないと、赤と青が入れ替わって表示されます。
デモの実行
Step 1. Arduino IDE で xiao_nrf52840_096_graphictest.ino を開きます。
Step 2. Tools > Board > Seeed nRF52 Boards > Seeed XIAO nRF52840 Plus と正しい Port を選択します。
Step 3. Upload をクリックします。
Step 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 location: 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 に 0.75× ゲイン で 16 ビットステレオフレームを送信します(各モノラルサンプルは両チャネルに複製されます)。
- ダブルバッファ(ピンポン)方式により、クリップが終了するまでオーディオストリームが途切れないようにします。
ボタン:
| 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 バッテリーが物理的に接続されているかどうかを検出し、次の 3 つの状態のいずれかを表示します:USB PWR(バッテリーなし)、パーセンテージ(バッテリーのみ)、charging(USB + バッテリー)。
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 への遷移を組み合わせて取り外しを確定します。これは工場出荷時の Dashboard の検出ロジックを反映したものです。
アイコン状態:
- バッテリーなし — 赤いバツ印付きのグレーのアウトラインバッテリーで、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 ごとに診断行も出力します。例:
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)
- 🖨️[3D Printed Enclosure] XIAO 0.96'' IPS Display Enclosure (by gokul)
- 📄[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/ディレクトリ内にあります
技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます。弊社は、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに合わせて選択いただけるよう、複数のコミュニケーションチャネルをご用意しています。



