◆M5Stack TAB5 ArduinoIDE M5GFX RTC RX8130環境でニキシー管時計もどきと
パタパタ時計もどきを表示してみました。
パタパタ時計もどきを表示してみました。
最初WiFi経由のNTPで時間を取得使用としましたが、ArduinoIDEではまだWiFiがサポート
されていなくてRTCからの時間取得で時計を表示しました。
*ニキシー管時計もどき
されていなくてRTCからの時間取得で時計を表示しました。
*ニキシー管時計もどき
*パタパタ時計もどき

◆動作状況
*パタパタ時計もどきについては、下記ブログ内記事も参照して下さい。
・数種のLCD付ESP32ボードで「パタパタ時計もどき」を表示させてみた
1.開発環境 2025/05/22時点
2.概要

◆動作状況
*ニキシー管時計もどきについては、下記ブログ内記事も参照して下さい。
*パタパタ時計もどきについては、下記ブログ内記事も参照して下さい。
・数種のLCD付ESP32ボードで「パタパタ時計もどき」を表示させてみた
1.開発環境 2025/05/22時点
①Windows11 X64 Pro 24H2
②Arduino IDE 2.3.6
➂ESP32ボードバージョンV3.2.0
2.概要
①LCDの描画は、M5GFXライブラリで出来ました。
②TAB5搭載RTCのライブラリは、ArtronShop_RX8130CEを使いました。
(ライブラリマネージャーで検索してインストールしました。)
➂ニキシー管時計のイメージデータは、以前から使っていたものを使用しました。
3.スケッチについて
①RTCに時刻をセットするスケッチ「set_time.ino」
(1) RTCにセットしたい時刻に、スケッチを修正します。(書き込む30秒後の時刻)
(2) スケッチをESP32P4に書き込み、セット時刻まで待ち「Enter」押下します。
*30秒操作が無ければRTCに書き込まずに(4)へ進みます。
(3) するとRTCにセットされ「loop」で読み込まれます。
(4) 時刻が有っていれば終了。狂っていれば①に戻ります。
②スケッチ内でニキシー管/パタパタ時計を選択できるようにしました。
*下記の三つのファイルは、サイズが大きいためzipファイルでダウンロード
(1)tab5_nixie_flip_clock_V3.ino *ニキシー管/パタパタ時計スケッチ
(2)img_nixie_tube.h *ニキシー管時計のイメージファイル
(3)img_flip.h *パタパタ時計のイメージファイル
(保障無しの自己責任で) tab5_nixie_flip_clock_V3.zip①RTCに時刻をセットするスケッチ「set_time.ino」
(1) RTCにセットしたい時刻に、スケッチを修正します。(書き込む30秒後の時刻)
(2) スケッチをESP32P4に書き込み、セット時刻まで待ち「Enter」押下します。
*30秒操作が無ければRTCに書き込まずに(4)へ進みます。
(3) するとRTCにセットされ「loop」で読み込まれます。
(4) 時刻が有っていれば終了。狂っていれば①に戻ります。
//set_time.ino
//2025/05/23 By JK1VCK ニキシー管&パタパタ時計 RTC RX8130CE対応版
//blog URL:https://gijin77.blog.jp/archives/44667829.html
//ボード:"ESP32P4 Dev Module"
//USB CDC On Boot: "Enabled"
//Flash Size: "16MB (128Mb)"
//Partition Scheme: "16M Flash (3MB APP/9.9MB FATFS)"
//PSRAM: "Enabled"
//USB Mode: "Hardware CDC and JTAG"
#include <Arduino.h>
#include <ArtronShop_RX8130CE.h>
#include <Wire.h>
#include <time.h>
ArtronShop_RX8130CE rtc(&Wire);
// 曜日を文字列に変換
const char* wday_str(int wday) {
const char* wd[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
if (wday >= 0 && wday <= 6) return wd[wday];
return "???";
}
void setup() {
Serial.begin(115200);
Wire.begin(31,32);
while (!rtc.begin()) {
Serial.println("RX8130CE init error !");
delay(1000);
}
Serial.println("Press any key in 5 seconds to set RTC...");
unsigned long start = millis();
while (millis() - start < 30000) {
if (Serial.available()) {
Serial.read(); // consume
// 必要に応じて初期設定(例:RTCに時刻をセット)
struct tm t;
t.tm_year = 2025 - 1900;
t.tm_mon = 4; // 5月(0起点)
t.tm_mday = 22;
t.tm_hour = 16;
t.tm_min = 44;
t.tm_sec = 0;
time_t tt = mktime(&t); // 曜日も自動で計算される
localtime_r(&tt, &t); // tm_wday にも反映される
rtc.setTime(t);
break;
}
}
}
void loop() {
struct tm t;
if (rtc.getTime(&t)) {
Serial.printf(
"Datetime: %02d:%02d:%02d %d/%d/%d (%s)\n",
t.tm_hour, t.tm_min, t.tm_sec,
t.tm_mday, t.tm_mon + 1, t.tm_year + 1900,
wday_str(t.tm_wday)
);
} else {
Serial.println("Get time from RTC fail !");
}
delay(1000);
}
②スケッチ内でニキシー管/パタパタ時計を選択できるようにしました。
*下記の三つのファイルは、サイズが大きいためzipファイルでダウンロード
(1)tab5_nixie_flip_clock_V3.ino *ニキシー管/パタパタ時計スケッチ
(2)img_nixie_tube.h *ニキシー管時計のイメージファイル
(3)img_flip.h *パタパタ時計のイメージファイル
➂ニキシー管/パタパタ時計の選択は、下記の部分を修正してコンパイル&
書き込みます。
tab5_nixie_flip_clock_V3.ino
23://************************************************************
24:int flip_flg=1; //パタパタ時計=1 ニキシー管=0
25:uint16_t d_color=WHITE; //コロン等カラー
26:#define GFX_BL 22 //バックライト制御用GPIO番号
27://************************************************************
④2025/5/31追記
又は、loopの最後の部分「disp_colon(0)」の後112行に下記を追記すれば10分毎に
ニキシー管/パタパタ時計を交互に表示出来ます。
disp_colon(0);//コロン消灯
if (((n_minute%10)==0)&&(n_second==0)) {//10分毎に反転
tft.fillScreen(BLACK);
bday=bh1=bh0=bm1=bm0=bs1=bs0=99;
flip_flg=!flip_flg;
if (flip_flg) d_color=WHITE; else d_color=ORANGE;
}
//ボード:"ESP32P4 Dev Module"
//ポート: "COM13"
//USB CDC On Boot: "Enabled"
//CPU Frequency: "360MHz"
//Core Debug Level: "None"
//USB DFU On Boot: "Disabled"
//Erase All Flash Before Sketch Upload: "Disabled"
//Flash Frequency: "80MHz"
//Flash Mode: "QIO"
//Flash Size: "16MB (128Mb)"
//JTAG Adapter: "Disabled"
//USB Firmware MSC On Boot: "Disabled"
//Partition Scheme: "16M Flash (3MB APP/9.9MB FATFS)"
//PSRAM: "Enabled"
//Upload Mode: "UARTO / Hardware CDC"
//Upload Speed: "921600"
//USB Mode: "Hardware CDC and JTAG"

4.このあと、TAB5のデモに戻すには下記を参照して戻す事が出来ます。
TAB5工場出荷時のデモに戻す方法
5.参考URL
①M5Stack Tab5 ドキュメント
②M5Unifiedライブラリ
➂M5GFXライブラリ
④M5GFX API
⑤M5GFXライブラリの使い方
⑥RTC RX8130ライブラリ
⑦M5Stack Tab5 回路図 PDF
⑧M5Stack Tab5 ピンマップ
⑧M5Stack Tab5レビュー – パート1:ESP32-P4とESP32-C6 5インチ
IoT開発キットの開封、分解、そして初試用
⑨M5Stack Tab5レビュー – パート2:ESP-IDFフレームワークとArduino IDEを
使用したESP32-P4ファームウェア開発入門
6.参考分解内部写真
*ESP32C6との接続用シリアル端子が、内部にパッドで有りました。

以上
①M5Stack Tab5 ドキュメント
②M5Unifiedライブラリ
➂M5GFXライブラリ
④M5GFX API
⑤M5GFXライブラリの使い方
⑥RTC RX8130ライブラリ
⑦M5Stack Tab5 回路図 PDF
⑧M5Stack Tab5 ピンマップ
⑧M5Stack Tab5レビュー – パート1:ESP32-P4とESP32-C6 5インチ
IoT開発キットの開封、分解、そして初試用
⑨M5Stack Tab5レビュー – パート2:ESP-IDFフレームワークとArduino IDEを
使用したESP32-P4ファームウェア開発入門
6.参考分解内部写真
*ESP32C6との接続用シリアル端子が、内部にパッドで有りました。

以上

コメント