オンボードペリフェラルの使い方
このページでは、0.96'' IPS Display の各オンボードペリフェラル向けに、単体で動作する機能別デモをまとめています。各セクションはそれぞれ独立しているため、自分のユースケースに合うものだけを選んで読めばよく、他を読む必要はありません。
このページのデモ GIF は、短く収めるために再生速度を上げています。
このページのすべてのデモは、Getting Started で説明している esp32 Boards by Espressif (3.3.11) に加えて、以下の手順で手動インストールする Seeed_GFX2 ライブラリが必要です。
- Seeed_GFX2(手動インストール) — このライブラリは Library Manager には登録されていないため、手動でインストールする必要があります:
Step 1. 上のボタンをクリックして、Seeed_GFX2 v1.0.0 を ZIP ファイルとしてダウンロードします(チュートリアルの再現性を保つため、リリースタグに固定されています)。あるいは、Seeed-Studio/Seeed_GFX2 からリポジトリをクローンしても構いません。
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_..., Config_...>()呼び出しでディスプレイを初期化します。ここで Board テンプレートがピンマップ(CS/DC/SCK/MOSI/RST/BL)を保持し、Panel Config が 80×160 解像度、BGR カラー順序、回転を組み込みます。driver.hをインクルードしたり、パネルを手動で構成したりする必要はありません。 - このボードでは、デモは
Board_XIAO_0inch96_LCD<13, 12>(RST=13, BL=12)とConfig_Seeed_0inch96_LCD_ST7789(80×160, BGR, 回転 2)を使用します。 - これらのデモでは IMU は I2C(
Wire)経由で直接読み取っており、外部 IMU ライブラリは不要です。PDM マイク と I2S 出力 は ESP-IDF 5 のドライバ(driver/i2s_pdm.h、driver/i2s_std.h)およびLittleFSを使用しており、いずれも esp32 ボードパッケージに含まれています。 - 0.96'' IPS Display には タッチコントローラ、SD カードスロット、Grove コネクタは搭載されていません — 裏面に 4 ピンの I2C テストパッドがあるだけなので、タッチ、SD、Grove 用のライブラリは不要です。
デモコードの入手方法
このページのすべてのデモは、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_ESP32/xiao_esp32s3_096_graphictest/にあります。.inoファイルをダブルクリックして Arduino IDE で開きます。
オプション B — git clone:
git clone https://github.com/Seeed-Projects/Display-Gadgets.git
その後、クローンした code_GFX2/Function/... フォルダからデモの .ino ファイルを開きます。
画面表示 — GraphicTest
このデモは、0.96 インチ ST7789 IPS パネル(80×160)に対して、カラーバー、線、矩形、円、三角形、角丸矩形、テキスト、ピクセルグラデーションを含むフルグラフィックスベンチマークを実行します。画面の配線が正しいこと、およびすべての描画呼び出しが期待どおり動作することを確認するために使用できます。
Code location: code_GFX2/Function/096_ESP32/xiao_esp32s3_096_graphictest/
動作の仕組み
このスケッチは Seeed_GFX2 を介して ST7789 IPS パネルを初期化し、その後 10 種類のグラフィックスプリミティブを順番に実行します。それぞれの処理時間を micros() で計測し、結果をシリアルモニタに出力します。
ディスプレイは次の 1 回のテンプレート呼び出しで初期化されます:
display.begin<Board_XIAO_0inch96_LCD<13, 12>,
Config_Seeed_0inch96_LCD_ST7789>();
Board テンプレートはピンマップを保持しており — CS=D2、DC=D3、SCK=D8、MOSI=D10 — その <RST, BL> テンプレートパラメータには生の GPIO 番号を指定するため、<13, 12> は RST=GPIO13(D17)、BL=GPIO12(D18)を意味します。Panel Config は 80×160 解像度、BGR カラー順序、回転 2 を組み込んでおり、driver.h や手動の invertDisplay() 呼び出しは不要です。
デモの実行方法
Step 1. Arduino IDE で xiao_esp32s3_096_graphictest.ino を開きます。
Step 2. Tools > Board > esp32 > XIAO_ESP32S3_PLUS と正しい Port を選択します。
Step 3. Upload をクリックします。
Step 4. Tools > Serial Monitor(115200 ボー)を開きます。パネルサイズに続いて、各テストのタイミング出力が表示されるはずです:
=== XIAO ESP32-S3 Plus 0.96 graphic test ===
LCD width: 80
LCD height: 160
Color bars: 56.67 ms
Lines: 1819.10 ms
Fast lines: 85.03 ms
Rectangles: 73.34 ms
Filled rects: 177.53 ms
Circles: 262.63 ms
Triangles: 235.64 ms
Round rects: 100.58 ms
Text: 635.61 ms
Pixel gradient: 1960.36 ms
Graphic test finished.
画面上では、各テストパターンが約 1 秒間表示され、その後次のパターンに切り替わります。すべてのテストが完了すると、「Done! All tests OK」と表示された画面が現れます。
期待される結果

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

ボードを傾けると、パーティクルは下側の端に向かって流れます。ディスプレイを水平に置くと、デモは直前の重力方向を保持します。
デモ 2: Raise to Wake
このデモは、IMU に内蔵された ウェイクアップ割り込み を D14 で利用する 画面のスリープ/ウェイクシステム を実装しています。8 秒間操作がないと画面が自動的にオフ(バックライトオフ)になり、デバイスを持ち上げたり動かしたりすると即座に復帰します。
コードの場所: code_GFX2/Function/096_ESP32/xiao_esp32s3_096_wakeup/
動作の仕組み
このデモでは、LSM6 互換 IMU の 組み込みウェイクアップイベント検出器 を使用します。これは、加速度センサのデータを内部で監視し、動きが設定可能なしきい値を超えたときに INT1 ピン(このボードでは D14 に接続)をアサートするハードウェア機能です。これにより、MCU は加速度センサを継続的にポーリングする必要がありません。
IMU 設定(LSM6 互換):
| レジスタ | 値 | 目的 |
|---|---|---|
CTRL3_C | 0x44 | BDU とブロックリード用オートインクリメントを有効化 |
CTRL1_XL | 0x40 | 加速度センサ @ 104 Hz、±2g |
CTRL2_G | 0x40 | ジャイロスコープ @ 104 Hz |
TAP_CFG | 0x80 | 組み込み割り込みを有効化 |
WAKE_UP_THS | 0x05 | ウェイクアップしきい値(中〜低感度) |
WAKE_UP_DUR | 0x00 | 継続時間フィルタなし(応答性の高いウェイク) |
MD1_CFG | 0x20 | ウェイクアップを INT1 にルーティング |
スリープ/ウェイクの流れ:
- アクティブ状態 — 画面はオンでバックライトが点灯しています。IMU データとバッテリ電圧(D16)が定期的に更新され、自動スリープまでの残り秒数がカウントダウン表示されます。
- 自動スリープ — 8 秒間動きがないと、スケッチはバックライトをオフにし、「Sleep — Move to wake」というメッセージを表示します。デフォルトでは、このデモは ディスプレイのみのスリープ を使用します。つまり ESP32-S3 は動作を継続し(USB CDC シリアルポートは接続されたまま)、パネルだけをオフにします。D14 上の IMU ウェイク割り込みは有効なままなので、動きの検出は継続されます。スケッチ内で
ENABLE_LIGHT_SLEEPをtrueに設定すると、GPIO ウェイクアップ付きの本物の ESP32 ライトスリープを使用できますが、その間 USB CDC が切断される可能性があります。 - ウェイクアップ — ユーザーがボードを持ち上げると、IMU が動きを検出して D14 を HIGH にアサートします。スケッチはバックライトを再点灯し、UI を再描画します — LCD と IMU の再初期化は行いません。
手動テストボタン:
| ボタン | ピン | 動作 |
|---|---|---|
| USR1 | D6 | 強制スリープ |
| USR2 | D7 | 強制ウェイク |
デモの実行
Step 1. Arduino IDE で xiao_esp32s3_096_wakeup.ino を開き、ボードとポートを選択して Upload をクリックします。
Step 2. 画面には、電源状態、バッテリ電圧/残量、モーションデータ、割り込み回数、スリープまでのカウントダウンを表示するコンパクトなダッシュボードが表示されます。ボードを静置すると、8 秒後に自動的にスリープに入ります。
Step 3. ボードを持ち上げるか、軽く振ると、画面が即座に復帰します。
Step 4. Tools > Serial Monitor(115200 ボー)を開き、起動とウェイクの遷移を観察します:
=== XIAO ESP32-S3 Plus 0.96 IMU Wake Demo ===
[IMU] LSM6-compatible at 0x6A, WHO=0x6A
[READY] awake; USR1=sleep, USR2=manual wake, motion=IMU wake
[READY] auto sleep in 8 seconds
[READY] sleep mode: display only (USB CDC stays connected)
[WAKE] IMU_D14 count=1
[WAKE] IMU_D14 count=2
[SLEEP] USR1
[WAKE] IMU_D14 count=3
[WAKE] IMU_D14 count=4
[SLEEP] USR1
[WAKE] IMU_D14 count=5
[SLEEP] AUTO_TIMEOUT
起動後、3 行の [READY] メッセージで操作方法が説明されます。USR1 はボードをスリープさせ、USR2 は手動でウェイクし、動きは IMU ウェイクをトリガします。各遷移はログに記録され、モーションによるウェイクアップでは [WAKE] IMU_D14 count=N(動くたびにカウントが増加)、USR1 を押したときは [SLEEP] USR1、8 秒間動きがない自動スリープ時は [SLEEP] AUTO_TIMEOUT と表示されます。
期待される結果

ウェイク中は、画面にリアルタイムのモーションおよびバッテリデータが表示されます。8 秒間静止すると画面が暗くなります。デバイスを持ち上げると画面が即座に復帰し、ウェイクカウンタがインクリメントされます。
マイク & スピーカー — フラッシュレコーダ
このデモでは、0.96'' IPS Display を小型ボイスレコーダとして使用します。USR1 を押すと、オンボードの PDM マイクから 5 秒間のクリップをオンボード Flash に録音し、USR2 を押すと外部 I2S アンプを通して再生します。
0.96'' IPS Display の PDM マイクは、他の XIAO ディスプレイボードと同じピンに接続されています:
| ピン | 信号 | 機能 |
|---|---|---|
| D0 | PDM_CLK | マイクへの PDM クロック出力 |
| D1 | PDM_DATA | マイクからの PDM データ入力 |
コードの場所: code_GFX2/Function/096_ESP32/xiao_esp32s3_096_flash_record/
ハードウェアセットアップ
再生には外部の I2S オーディオアンプとスピーカー が必要です。このデモは、ボードの I2S 出力パッドに接続された MAX98357A ブレイクアウト用に作成されています。
| I2S Pad | XIAO Pin | MAX98357A |
|---|---|---|
| 3V3 | 3V3 | VIN |
| GND | GND | GND |
| I2S_SD | D11 | DIN |
| I2S_SCK | D12 | BCLK |
| I2S_WS | D13 | LRC |
I2S パッド(3V3、GND、D11、D12、D13)は、ディスプレイボードの裏面にある拡張パッドグループに引き出されています。
動作の仕組み
録音(USR1) — オンボードの PDM(パルス密度変調)デジタルマイク は、ESP32-S3 の I2S ペリフェラルを PDM RX モードに設定してサンプリングします。ESP-IDF v5(Arduino core 3.3.11)では、新しいドライバ API(driver/i2s_pdm.h)を使用します。マイクは 16 kHz モノラル で、256 フレームずつの DMA ディスクリプタ 4 個でキャプチャされます。USR1 を押すと、スケッチは 5 秒間 の音声を RAM バッファにサンプリングし、その後 LittleFS を使ってオンボード Flash に WAV ファイル(/REC_RAW.WAV)として書き込みます。
PDM マイクの動作開始後、スケッチはウォームアップデータとして最初の 300 ms のキャプチャデータを破棄し、録音開始時の立ち上がりノイズを低減します。
スケッチが 7 秒 以内にすべてのサンプルを取得できない場合、録音を停止して "Mic timeout" を表示し、録音ループでブロックされたままにならないようにします。
このボードでは、マイクのチャンネル選択ピンは R8(0 Ω 抵抗)によって GND に接続されており、代替の 3V3 ストラップである R6 は実装されていません。そのためオンボードマイクは 左 PDM スロットを駆動し、スケッチで slot_cfg.slot_mask = I2S_PDM_SLOT_LEFT を設定しているのはこのためです。別のマイク配線にコードを適用する場合は、この点に注意してください。
再生(USR2) — USR2 を押すと、Flash から WAV を読み戻し、I2S ペリフェラルを標準(Philips)ステレオモードで D11/D12/D13(driver/i2s_std.h)に出力してストリーミングします。モノラルサンプルは両チャンネルに複製され、クリッピングを避けるために 0.75× のゲインが適用されます。アンプが小型スピーカーを駆動し、録音内容を聞くことができます。
ESP-IDF v5 の API(i2s_new_channel() / i2s_channel_read() / i2s_channel_write())は、このデモの nRF52840 版とは異なります。nRF52840 版では nRF52 の PDM ライブラリと NRF_I2S ペリフェラルを直接使用しています。nRF52840 用コードを移植する場合は、オーディオのセットアップを完全に置き換える必要があります。
画面上の状態:
| 状態 | 説明 |
|---|---|
| Ready | "Recorder" タイトルと "USR1: record" および "USR2: play"(または "No recording")を表示 |
| Recording | キャプチャ中は "Capturing voice" と "Please speak" を表示(進行状況のライブ表示なし) |
| Error | キャプチャが 7 秒を超えた場合は "Mic timeout" と "Try again" を表示 |
| Saved | "Done — Saved WAV" と保存完了を表示し、その後 Ready に戻る |
| Playback | ストリーミング中は "Playing..." を表示し、その後 "Finished" を表示 |
デモの実行
ステップ 1. 上記の説明どおりに、MAX98357A アンプとスピーカーを I2S パッドに接続します。
ステップ 2. Arduino IDE で xiao_esp32s3_096_flash_record.ino を開きます。
ステップ 3. ボードを選択します:Tools > Board > esp32 > XIAO_ESP32S3_PLUS(esp32 Boards 3.3.11 を使用)。
ステップ 4. Tools > Partition Scheme > "Default with spiffs (3MB APP/1.5MB SPIFFS)" を選択します。
ステップ 5. 正しい Port を選択し、Upload をクリックします。
レコーダーは WAV ファイルを LittleFS に保存しますが、これは SPIFFS パーティションを使用します。ボードのデフォルトのパーティションスキーム(16M Flash (2MB APP/12.5MB FATFS))には SPIFFS パーティションがないため、LittleFS.begin() は false を返し、WAV ファイルは書き込めず、画面には "Write failed / Check flash" と表示されます。録音を動作させるには、上記の SPIFFS パーティションスキームを 必ず 選択してください。
ステップ 6. USR1(D6) を押して、オンボードマイクから 5 秒間の音声を録音します。録音中、画面には "Capturing voice" と表示されます。
ステップ 7. USR2(D7) を押して、録音をスピーカーから再生します。
録音はオンボード Flash(LittleFS)に保存されるため、電源を切っても保持されます。一度録音しておけば、後で再生できます。再度録音すると、前のファイルは上書きされます。
期待される結果

USR1 を押すと、画面に "Capturing voice" と表示されます。5 秒後、WAV が保存されたことが確認されます。USR2 を押すと、画面に再生ステータスを表示しながら、接続されたスピーカーから音声が再生されます。
ユーザーボタン
0.96'' IPS ディスプレイには、XIAO ESP32-S3 Plus に接続された 2 つの物理プッシュボタン があります:
| ボタン | ピン | ロジック | シルク印刷ラベル |
|---|---|---|---|
| USR1 | D6 | アクティブ Low(押下 = LOW) | USR1 |
| USR2 | D7 | アクティブ Low(押下 = LOW) | USR2 |
1.14'' IPS ディスプレイとは異なり、0.96'' IPS ディスプレイには 3 つ目のボタン(D19 上の USR3)はありません。また、専用のボタン用ブレークアウトパッドもありません。
ボタンの読み取り
ボタンは XIAO の内部プルアップ抵抗を使用します。単純な読み取りは次のようになります:
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);
}
}
割り込みによるデバウンス
応答性が高くデバウンスされたボタン処理のために、短い安定待ち時間付きで GPIO 割り込みを使用できます:
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
}
}
}
ファクトリーダッシュボードでのデフォルト動作
プリインストールされているファームウェアでは、ボタンは次のように割り当てられています(自分のコードでこれらを上書きできます):
| ボタン | ピン | 動作 |
|---|---|---|
| USR1 | D6 | 画面の明るさを切り替え(100% → 75% → 50% → 25% → 100%) |
| USR2 | D7 | 画面バックライトの ON/OFF を切り替え |
画面がオフ(USR2 で切り替え)になっているときに再度 USR2 を押すと、以前の 0 以外のレベルに復帰します。
バッテリー電圧検出
このデモでは、オンボードのバッテリー分圧回路を D16 で読み取り、0.96'' IPS ディスプレイに 2 つの黄色いライブ値として表示します:D16 の分圧電圧の生値と、計算されたバッテリー電圧です。電圧値のみを表示し、バッテリー残量(パーセンテージ)の推定や充電状態の報告は行いません。
コードの場所: code_GFX2/Function/096_ESP32/xiao_esp32s3_096_battery_status/
動作の仕組み
バッテリー回路:
ESP32-S3 Plus は、オンボードの分圧回路を介して D16 に接続された LiPo バッテリー電圧を読み取ります:
| 信号 | ESP32-S3 ピン | 機能 |
|---|---|---|
BAT_ADC | D16 | 分圧されたバッテリー電圧を読み取るアナログ入力。内部的に 316 kΩ / 160 kΩ の分圧回路に接続されています。このピンを外部用途に使用しないでください。 |
分圧比: 316 kΩ / 160 kΩ → 分圧比 = (316 + 160) / 160 ≈ 2.975
読み取り:
このスケッチは Board_XIAO_0inch96_LCD<13, 12> と Config_Seeed_0inch96_LCD_ST7789(80×160、BGR、回転 2)でディスプレイを初期化し、その後 D16 を 12 ビット分解能・11 dB 減衰で analogReadMilliVolts() を使って 700 µs 間隔で 12 回サンプリングします。サンプルを平均して分圧器の生の電圧を求め、分圧比を掛けてバッテリ電圧を算出します(Calc = D16 × 2.975)。そして両方の値を中央寄せの黄色い 2 行として描画します。画面は、どちらかの値が意味のある量だけ変化したときにのみ更新されます(D16 ≥ 0.02 V または Calc ≥ 0.05 V)。
充電状態の信号は ESP32-S3 の GPIO には接続されていません。このデモは電圧値のみを表示し、バッテリの有無や充電状態の検出、バッテリ残量の推定は行いません。
デモの実行
ステップ 1. Arduino IDE で xiao_esp32s3_096_battery_status.ino を開きます。
ステップ 2. Tools > Board > esp32 > XIAO_ESP32S3_PLUS と正しい Port を選択します。
ステップ 3. Upload をクリックします。
ステップ 4. 画面を観察します — 2 本の黄色い行が表示されます。上段は生の D16 分圧電圧、下段は計算されたバッテリ電圧です。LiPo バッテリ(または USB-C ケーブル)を接続・取り外しして、値がどのように更新されるか確認します。
期待される結果
![]() 電圧読み取り値(D16 + Calc) | ![]() バッテリコネクタ(背面) |
画面には、上段に生の D16 分圧電圧、下段に計算されたバッテリ電圧(Calc)が表示されます。LiPo バッテリを接続すると、Calc はバッテリ端子電圧のおおよその値になります。USB 電源のみでも読み取り値が表示される場合があるため、Calc だけではバッテリが接続されているかどうかを確認することはできません。
このデモは、シリアルモニタにも 1 秒ごとに診断用の 1 行を出力します。例:
D16 1.39V | Calc 4.14V
リソース
- 🗃️[PCB Design Files] XIAO 0.96'' IPS Display (ESP32-S3) KiCad Project
- 📄[Schematic] XIAO 0.96'' IPS Display (ESP32-S3) 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 (ESP32-S3) Factory Firmware
- [Demo] XIAO Display Board Demo Code — すべての Function デモは
code_GFX2/Function/096_ESP32/ディレクトリ内にあります
技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます。弊社は、製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに合わせて選べる複数のコミュニケーションチャネルをご用意しています。

