M5Stack StackChan(CoreS3 ベース)で動くプレゼン用カウントダウンタイマーです。 残り時間に応じて顔の表情が変化し、カウントダウン中は首を上下にうなずかせます。
- デフォルト 90 分からのカウントダウン(画面タッチの 4 ボタンで操作)
-5min/RESET/START・PAUSE/+5min
- 残り時間で表情が変化(通常 → 15分以下:真剣 → 5分以下:焦り → 時間切れ:びっくり)
- 残り 30/15/5/1 分・10 秒以下でビープ、時間切れでトーン
- カウントダウン中は首(垂直サーボ)を上下にゆっくりうなずかせる
- M5Stack StackChan(ホスト: M5Stack CoreS3 / ESP32-S3)
- 首振り: FEETECH SCS0009 シリアルバスサーボ ×2(水平=ID1 / 垂直=ID2)
- PWM ではなく UART1 (1 Mbps, TX=GPIO6 / RX=GPIO7) で制御
- サーボ電源(VM)は PY32 I/O エクスパンダ(I2C 0x6F)の pin0 を High にして投入
ESP-IDF v5.5 が必要です。
# 依存コンポーネント(M5Unified / M5GFX)は idf_component.yml から自動取得されます
idf.py set-target esp32s3 # sdkconfig 同梱のため通常は不要
idf.py build
idf.py -p /dev/ttyACM0 flash monitor首振りやサーボの中心位置は main/main.cpp の定数で調整できます。
| 定数 | 既定値 | 説明 |
|---|---|---|
SERVO_SWAY_AMPLITUDE_DEG |
15.0 |
うなずきの上下振れ幅 (度) |
SERVO_SWAY_PERIOD_S |
2.5 |
首振り周期 (秒) |
PITCH_NEUTRAL_DEG |
35.0 |
うなずきの中心角 (推奨 5〜85 度内) |
YAW_ZERO_POS / PITCH_ZERO_POS |
460 / 620 |
サーボ中心位置(個体ごとに校正が必要な場合あり) |
サーボの中心位置は個体差があります。首が傾く場合は
YAW_ZERO_POS/PITCH_ZERO_POSを実機に合わせてください。
本リポジトリは MIT License(LICENSE)で公開しています。以下の MIT ライセンスのソフトウェアを利用しています。
- M5Unified — MIT (© M5Stack)
- M5GFX — MIT (© M5Stack)
- FEETECH FTServo ドライバ(
components/scservo/) — MIT (© ftservo)。 M5Stack/StackChan-BSP 経由で取り込み。詳細はcomponents/scservo/README.mdを参照。