M5Stack Nixie tube Clock
M5Stack で ニキシー管時計を製作しました。 2019.06.16
M5Stack に 130円の リアルタイムクロックボード(RTC)を追加し 表示は ニキシー管画像 を使用しました。
ネット接続ができない場所でも RTCボード があると動作します。
RTCボード が無くても ネット接続 ( NTP ) できると動作します。
.
機能:Cボタン スイッチで 表示を切り換えます。
_ 時計機能:130円の リアルタイムクロックボード(RTC)を追加しました。
_ RTCが無くとも動作します。
_ NTP設定:起動時に ネット接続が可能であれば RTCにNTPを保存します。
_ 時間調整:ネット接続が可能であれば 決められた時間にNTP時間を調整(保存)します。
動作:ネットのNTPへ接続し 日付と時間のデーターを入手します。
_ 日付と時間を RTC へ保存します。
_ ネット環境が無いか 接続出来ない場合は 上記のNTPをパスします。
_ RTC から 日付と時間を取得し ディスプレーのニキシー管に表示します。
_ RTC が無い場合は NTP の時間を使用します。
_ 時間の更新は ESP32内の Timer を使用します。( 理由は 製作メモ を参照ください)
DS3231 ボード:M5Stackは 時計機能が無い為、DS3231 リアルタイムクロック (RTC) を追加します。
_ 使用する DS3231 は ラズベリーパイ用の RTC Module で 130円と低価格で小型です。
_ Raspberry Pi RTC Module With Battery:回路図参照の事。
_ DS3231 の使用事例、価格、販売店 は 「DS3231 RTC in ESP8266」を参照ください。
_ 日本国内は高いですので ebay か Aliexpress で入手します。
_
.
部品の準備:DS3231 Precision RTC Clock Memory Module For Arduino Raspberry Pi
販売:ebay の worldchips Store は 製品管理は良いです。輸送期間は8日〜16日を経験しています。
注意:Aliexpress や ebay は 販売画像と異なる物が来る事があります。
_ DS3231 Module は 電池付きであるかを確かめてください。
_ 以下の worldchips Store を再調査すると Battery 付きではありませんでした。2019.06.29
_ 最近、中◯からのバッテリの輸送は出来ない話を聞いています。2019.07.07
_ CR1025:3V 10.0 x 2.5mm。2019.07.07
_ ボタン電池一覧表で 電圧とサイズを確認して購入してください。2019.07.07
Store | price | memo | |
ebay : worldchips | 127円 | 1個 | |
ebay : worldchips | 118円 | 10個 1184円 | |
ebay : lincx | 116円 | 1個 | |
ebay : 3c_topstore | 214円 | 1個 調査済(追記) | ⭕ |
.
追記:2019.07.23。3c_topstore Store の調査結果:
_ 価格:1個 215円 ( 10個 $19.9 )。バッテリー付。輸送期間=19日。
追記:2019.07.04。DS3231 価格:
_ その後の調査で スイッチサイエンスの DS3231 は 1個 2104円です。約17倍の価格。
.
.
M5Stack 改造:DS3231 BOARD の取り付け。
1. DS3231 BOARD の BATTERY が 3.0V ある事を確認します。
2. BATTERY の位置を移動します。移動とハンダ付け時に向きに注意してください。
_
3. DS3231 BOARD をカプトンテープで保護します。
4. ハンダ付け時に周囲を溶かさない様にテープ等でケースを保護します。
5. M5Stackの基板にある小さな部品に接触や負担を与えない配置を考えます。
6. 回路図に従い 配線します。
7. M-BUS 3.3V と GROVE PIN にハンダ付けする時は 短時間(0.5秒)に実施します。
8, 注意:M5Stackには 小さな部品があり 接触, 衝撃, 熱 を加えないでください。
.
ニキシー管 画像のHex データー製作:元画像 70×134 pixel ( png ):
_ 12枚の画像 70×134 から vfd_70x134.c を作成します。
1. vfd_18x34.c と vfd_35x67.c は 「M5StickC Nixie tube Clock」から入手します。
2. vfd_70x134_0, , , , vfd_70x134_9, vfd_70x134_n.png, vfd_70x134_q.png
_ 以下の画像を DL ( ドラッグ アンド ドロップ ) し
_ 「M5StickC Nixie tube Clock」を参照し
_ 「lcd-image-converter 20180211-beta」で vfd_70x134.c を作成します。
_ 少し手間かもしれませんが マスターすると 綺麗な作品を自由に作る事が可能になります。
3. apple_35x41.png:Apple icon が好きな方へ。 apple_35x41.c は リストに記載しました。
_
4. vfd_70x134_0 〜 vfd_70x134_9, vfd_70x134_n.png, vfd_70x134_q.png
.
5. スケッチ:
_ 下の様に スケッチを用意します。
_ ライブラリー:RTClib : スケッチ内に入れるか ライブラリーにいれます。
_ フォルダーは以下の様になります。
_
.
製作メモ:Production note
1. 時間の更新は ESP32内の Timer を使用します:
_ RTC の データーを 1秒毎に取得すると なぜか 飛び飛びの値しか取得出来ません。
_ いろいろ試しましたが 技術力が無い為か 1秒毎に取得する事はできませんでした。
_ 対策:その為に 1秒毎の動作は ESP32 の Timer を使用しています。
_ ネットでのサンプルを見ると 3秒毎に取得する例が殆どで 1秒単位の表示ができません。
_ M5Stack のサンプルは Timer を使用しています。
_ Timer を使用する場合は 適切な 単位の宣言(unsigned long)が必要です。
2. RTC は CS が無きため GPIO は D(SDA)=5, C(SCK)=13 としました。
maffucci氏の M5Stack Fire Robottillo:Stack Case を製作しました。
ロボチックな感じがなかなか良いです。
3. トラブルシュート:
_ シリアルモニター:「RTC is NOT running!」が表示される:DS3231 の配線を確認します。
_ ディスプレーの表示:「2165/165/165 165:165:85」になる:DS3231 の配線を確認します。
_ ディスプレーの表示:「2010 ,,,, 」になる:DS3231 のバッテリー不足です。交換します。
_ バッテリー交換:電圧をチェックしてください。
.
追記:青いニキシー管:2019.07.04
_ ニキシー管イメージは 微妙で 数字周りのニキシー管イメージが少ない感じです。
_
.
参考:
M5StickC Nixie tube Clock:2019.06.15
DS3231 RTC in ESP8266:2016.10.07:
ESP8266 + RTC + NTP デジタル時計:2015.12.05:
+DEVICE PLUS:ESP32とRTCで「二度寝防止アラーム時計」を作ろう!
Raspberry Pi RTC Module With Battery:回路図があります。
.
感想:
_ 前回 M5StickC Nixie tube Clock:これに基づき M5Stack も製作しました。
_ 小型化:PROTO Board か Expansion Board は大きくなりますので本体に収めました。
_ 本体未改造方法:Expansion Board か Expansion Adapter で行なう方法があります。
_ Nixie 画像 70×134 pixel :M5Stack の画面に合わせ作成しました。
_ DS3231のバッテリー:ハンダ付けです。電圧が無い場合は交換する必要があります。
_ DS3231 モジュールが無い場合:NTPやPC TIME を使用し電源を切らなければ使用できます。
_ 表示:ニキシー数値のサイズや位置を変更すると 好みのデザインができます。
_ 追記:2019.06.30。
_ facebook:関氏の情報:「電池は省略し本体のBATT端子に接続しました。」
_ 配線は使い慣れた0.2mmのホルマル線を使用。
_ GROVEのGNDは付けにくいのでUSBフレームのGNDに強引にはんだ付け。
.
スケッチ:M5Stack nixie tube clock : 2019.06.16 macsbug
追記:2020.06.05:Add Down Load。
_ Down Load:M5Stack_nixie_tube_clock.zip
_ Down Load:M5Stack_nixie_tube_clock.zip:誤記修正版((11行目)。#include “vfd_18x34.c” :2020.07.04
_ DL後に File name を m5stack_nixie_tube_clock.zip ( .zip ) に変更します。
_ 解凍すると M5stack_nixie_tube_clock の Folder ができます。
_ Down Load ( blue version ):M5Stack_nixie_tube_clock_blue.zip
_ DL後に File name を m5stack_nixie_tube_clock_blue.zip ( .zip ) に変更します。
_ 解凍すると M5stack_nixie_tube_clock_blue の Folder ができます。
_ const char *ssid = “xxxx”; // your ssid , const char *pass = “xxxx”; // your password
_ は各自の値を入力します。
// M5Stack nixie tube clock : 2019.06.16 macsbug // https://macsbug.wordpress.com/2019/06/16/m5stack-nixie-tube-clock/ // RTC DS3231 : https://wiki.52pi.com/index.php/Raspberry_Pi_Super_Capacitor_RTC(English) // RTClib : https://www.arduinolibraries.info/libraries/rt-clib #include <M5Stack.h> #include "M5StackUpdater.h" #include <WiFi.h> #include <SPI.h> #include "RTClib.h" RTC_DS3231 rtc; #include "vfd_18x34.c" // font 18px34 #include "vfd_35x67.c" // font 35x67 #include "vfd_70x134.c" // font 70px134 #include "apple_35x41.c" // icon 35px41 const uint8_t rtc_sda = 5, rtc_sck = 13; const char *ssid = "your ssid"; const char *pass = "your password"; uint32_t targetTime = 0; // for next 1 second timeout const uint8_t*n[] = { // vfd font 18x34 vfd_18x34_0,vfd_18x34_1,vfd_18x34_2,vfd_18x34_3,vfd_18x34_4, vfd_18x34_5,vfd_18x34_6,vfd_18x34_7,vfd_18x34_8,vfd_18x34_9 }; const uint8_t*m[] = { // vfd font 35x67 vfd_35x67_0,vfd_35x67_1,vfd_35x67_2,vfd_35x67_3,vfd_35x67_4, vfd_35x67_5,vfd_35x67_6,vfd_35x67_7,vfd_35x67_8,vfd_35x67_9, vfd_35x67_q,vfd_35x67_n }; const uint8_t*b[] = { // vfd font 70x134 vfd_70x134_0,vfd_70x134_1,vfd_70x134_2,vfd_70x134_3,vfd_70x134_4, vfd_70x134_5,vfd_70x134_6,vfd_70x134_7,vfd_70x134_8,vfd_70x134_9, vfd_70x134_q,vfd_70x134_n }; const char *monthName[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; uint16_t yy; uint8_t mn, dd, hh, mm, ss; uint8_t md = 2; // mode 1(yyyy_mmdd_hhmmss),2(mmdd_hh_mmss),3(mmdd_ss_hhmm) void setup() { M5.begin(); Wire.begin(rtc_sda,rtc_sck);delay(10); //GLOVE A : SDA,SCL if(digitalRead(39)==0){updateFromFS(SD);ESP.restart();} rtc.begin(); M5.Lcd.setBrightness(255); M5.Lcd.setRotation(1); M5.Lcd.fillRect(0, 0, 319, 239, ORANGE); M5.Lcd.fillRect(1, 1, 317, 236, BLACK); M5.Lcd.setTextSize(2); esp_timer_init(); wifi_setup(); // wifi conection, NTP read, Save NTP to RTC rtc_setup(); // Read the value of RTC } void loop() { M5.update(); if (targetTime < esp_timer_get_time()/1000 ){ targetTime = esp_timer_get_time()/1000 + 1000; ss++; if (ss == 60) { ss = 0; mm++; if (mm == 60) { mm = 0; hh++; if (hh == 24) { hh = 0; dd++; // }}}} if(M5.BtnC.wasPressed()){ // mode change if (md == 3){md = 1;M5.Lcd.fillRect(1,1,317,236,BLACK);return;} if (md == 2){md = 3;M5.Lcd.fillRect(1,1,317,236,BLACK);return;} if (md == 1){md = 2;M5.Lcd.fillRect(1,1,317,236,BLACK);return;} } if ( md == 3 ){ hhmm();} // yyyy,mm,dd,ss,hh,mm if ( md == 2 ){ yyyy_mmdd_hhmmss();} // yyyy,mm,dd,hh,mm,ss if ( md == 1 ){ mmss();} // mm,ss periodic_ntp(); // Set the time by periodic NTP delay(500); } void wifi_setup(){ WiFi.mode(WIFI_STA); WiFi.disconnect(); M5.Lcd.setCursor(20,40);M5.Lcd.setTextColor(WHITE); M5.Lcd.print("Connecting to wifi"); WiFi.begin(ssid,pass); int wifi_check = 10; // WiFi count M5.Lcd.setCursor(20,80);M5.Lcd.setTextColor(YELLOW); M5.Lcd.print("wifi check in progress"); while (WiFi.status() != WL_CONNECTED){ // WiFI Status delay(500); wifi_check--; if (wifi_check < 0){break;} } if (wifi_check > 0){ // when there is wifi M5.Lcd.setCursor(20,120);M5.Lcd.setTextColor(GREEN); M5.Lcd.print("wifi connection complete");delay(2000); struct tm t; configTime(9*3600L,0,"ntp.nict.jp", "time.google.com","ntp.jst.mfeed.ad.jp"); getLocalTime(&t); yy = t.tm_year + 1900; mn = t.tm_mon + 1; dd = t.tm_mday; hh = t.tm_hour; mm = t.tm_min; ss = t.tm_sec; //Serial.printf("%d %d %d %d %d %d\n",yy,mn,dd,hh,mm,ss); rtc.adjust(DateTime(yy,mn,dd,hh,mm,ss));//save ntp to rtc M5.Lcd.setCursor(20,160);M5.Lcd.setTextColor(GREEN); M5.Lcd.print("SET UP NTP");delay(2000); } if (wifi_check < 0){ // When there is no wifi M5.Lcd.setCursor(20,120);M5.Lcd.setTextColor(ORANGE); M5.Lcd.print("without wifi connection");delay(2000); } } void rtc_setup(){ DateTime now = rtc.now(); // time geting from RTC if (now.year() == 2165){ // rtc check M5.Lcd.setCursor(20,200);M5.Lcd.setTextColor(RED); M5.Lcd.print("RTC FAIL");delay(2000); M5.Lcd.fillRect(1, 1, 317, 236, BLACK); }else{ yy = now.year(); mn = now.month(); dd = now.day(); hh = now.hour(); mm = now.minute(); ss = now.second(); //Serial.printf("%d %d %d %d %d %d\n",yy,mn,dd,hh,mm,ss); M5.Lcd.setCursor(20,200);M5.Lcd.setTextColor(BLUE); M5.Lcd.print("SET UP RTC");delay(2000); M5.Lcd.fillRect(1, 1, 317, 236, BLACK); } } void yyyy_mmdd_hhmmss(){ int y1 = (yy / 1000) % 10; int y2 = (yy / 100) % 10; int y3 = (yy / 10) % 10; int y4 = yy % 10; int ma = (mn / 10) % 10; int mb = mn % 10; int d1 = (dd / 10) % 10; int d2 = dd % 10; int h1 = (hh / 10) % 10; int h2 = hh % 10; int m1 = (mm / 10) % 10; int m2 = mm % 10; int s1 = (ss / 10) % 10; int s2 = ss % 10; //int p0 = 8; int x0 = 40; int t0 = 22; // icon //M5.Lcd.pushImage( p0 + 0*x0, t0, 35,41, (uint16_t *)apple_35x41); int p1 = 80; int px1 = 40; int py1 = 5; M5.Lcd.pushImage( p1 + 0*px1, py1, 35,67, (uint16_t *)m[y1]); M5.Lcd.pushImage( p1 + 1*px1, py1, 35,67, (uint16_t *)m[y2]); M5.Lcd.pushImage( p1 + 2*px1, py1, 35,67, (uint16_t *)m[y3]); M5.Lcd.pushImage( p1 + 3*px1, py1, 35,67, (uint16_t *)m[y4]); int p2 = 80; int px2 = 40; int py2 = 76; M5.Lcd.pushImage( p2 + 0*px2, py2, 35,67, (uint16_t *)m[ma]); M5.Lcd.pushImage( p2 + 1*px2, py2, 35,67, (uint16_t *)m[mb]); //M5.Lcd.drawPixel(118,13, ORANGE); M5.Lcd.drawPixel(119,23,ORANGE); M5.Lcd.pushImage( p2 + 2*px2, py2, 35,67, (uint16_t *)m[d1]); M5.Lcd.pushImage( p2 + 3*px2, py2, 35,67, (uint16_t *)m[d2]); int p3 = 2; int px3 = 40; int py3 = 150; M5.Lcd.pushImage( p3 + 0*px3, py3, 35,67, (uint16_t *)m[h1]); M5.Lcd.pushImage( p3 + 1*px3, py3, 35,67, (uint16_t *)m[h2]); M5.Lcd.pushImage( p3 + 2*px3, py3, 35,67, (uint16_t *)m[10]); M5.Lcd.pushImage( p3 + 3*px3, py3, 35,67, (uint16_t *)m[m1]); M5.Lcd.pushImage( p3 + 4*px3, py3, 35,67, (uint16_t *)m[m2]); M5.Lcd.pushImage( p3 + 5*px3, py3, 35,67, (uint16_t *)m[10]); M5.Lcd.pushImage( p3 + 6*px3, py3, 35,67, (uint16_t *)m[s1]); M5.Lcd.pushImage( p3 + 7*px3, py3, 35,67, (uint16_t *)m[s2]); if ( s1 == 0 && s2 == 0 ){ fade1();} } void mmss(){ int ma = (mn / 10) % 10; int mb = mn % 10; int d1 = (dd / 10) % 10; int d2 = dd % 10; int h1 = (hh / 10) % 10; int h2 = hh % 10; int m1 = (mm / 10) % 10; int m2 = mm % 10; int s1 = (ss / 10) % 10; int s2 = ss % 10; int p0 = 8; int x0 = 40; int t0 = 22; // icon M5.Lcd.pushImage( p0 + 0*x0, t0, 35,41, (uint16_t *)apple_35x41); int p2 = 65; int px2 = 40; int py2 = 10; M5.Lcd.pushImage( p2 + 0*px2, py2, 35,67, (uint16_t *)m[ma]); M5.Lcd.pushImage( p2 + 1*px2, py2, 35,67, (uint16_t *)m[mb]); //M5.Lcd.drawPixel(118,13, ORANGE); M5.Lcd.drawPixel(119,23,ORANGE); M5.Lcd.pushImage( p2 + 2*px2, py2, 35,67, (uint16_t *)m[d1]); M5.Lcd.pushImage( p2 + 3*px2, py2, 35,67, (uint16_t *)m[d2]); int p3 = 240; int px3 = 40; int py3 = 10; M5.Lcd.pushImage( p3 + 0*px3, py3, 35,67, (uint16_t *)m[h1]); M5.Lcd.pushImage( p3 + 1*px3, py3, 35,67, (uint16_t *)m[h2]); int p4 = 2; int px4 = 80; int py4 = 100; M5.Lcd.pushImage( p4 + 0*px4 , py4, 70,134, (uint16_t *)b[m1]); M5.Lcd.pushImage( p4 + 1*px4 -4, py4, 70,134, (uint16_t *)b[m2]); //M5.Lcd.drawPixel(155,150, ORANGE); M5.Lcd.drawPixel(155,190,ORANGE); M5.Lcd.fillCircle(156,151,3,ORANGE);M5.Lcd.fillCircle(156,191,3,ORANGE); M5.Lcd.fillCircle(156,151,1,YELLOW);M5.Lcd.fillCircle(156,191,1,YELLOW); M5.Lcd.pushImage( p4 + 2*px4 +4, py4, 70,134, (uint16_t *)b[s1]); M5.Lcd.pushImage( p4 + 3*px4 , py4, 70,134, (uint16_t *)b[s2]); if ( m1 == 0 && m2 == 0 ){ fade2();} } void hhmm(){ int ma = (mn / 10) % 10; int mb = mn % 10; int d1 = (dd / 10) % 10; int d2 = dd % 10; int h1 = (hh / 10) % 10; int h2 = hh % 10; int m1 = (mm / 10) % 10; int m2 = mm % 10; int s1 = (ss / 10) % 10; int s2 = ss % 10; //int p0 = 8; int x0 = 40; int t0 = 22; // icon //M5.Lcd.pushImage( p0 + 0*x0, t0, 35,41, (uint16_t *)apple_35x41); int p2 = 65; int px2 = 40; int py2 = 10; M5.Lcd.pushImage( p2 + 0*px2, py2, 35,67, (uint16_t *)m[ma]); M5.Lcd.pushImage( p2 + 1*px2, py2, 35,67, (uint16_t *)m[mb]); //M5.Lcd.drawPixel(118,13, ORANGE); M5.Lcd.drawPixel(119,23,ORANGE); M5.Lcd.pushImage( p2 + 2*px2, py2, 35,67, (uint16_t *)m[d1]); M5.Lcd.pushImage( p2 + 3*px2, py2, 35,67, (uint16_t *)m[d2]); int p3 = 240; int px3 = 40; int py3 = 10; M5.Lcd.pushImage( p3 + 0*px3, py3, 35,67, (uint16_t *)m[s1]); M5.Lcd.pushImage( p3 + 1*px3, py3, 35,67, (uint16_t *)m[s2]); int p4 = 2; int px4 = 80; int py4 = 100; M5.Lcd.pushImage( p4 + 0*px4 , py4, 70,134, (uint16_t *)b[h1]); M5.Lcd.pushImage( p4 + 1*px4 -4, py4, 70,134, (uint16_t *)b[h2]); //M5.Lcd.drawPixel( 155,150, ORANGE); M5.Lcd.drawPixel(155,190,ORANGE); M5.Lcd.fillCircle(156,151,3,ORANGE);M5.Lcd.fillCircle(156,191,3,ORANGE); M5.Lcd.fillCircle(156,151,1,YELLOW);M5.Lcd.fillCircle(156,191,1,YELLOW); M5.Lcd.pushImage( p4 + 2*px4 +4, py4, 70,134, (uint16_t *)b[m1]); M5.Lcd.pushImage( p4 + 3*px4 , py4, 70,134, (uint16_t *)b[m2]); if ( h1 == 0 && h2 == 0 ){ fade2();} } void fade1(){ int p3 = 2; int px3 = 40; int py3 = 150; for ( int i = 0; i < 2; i++ ){ M5.Lcd.pushImage( p3 + 2*px3, py3, 35,67, (uint16_t *)m[11]); M5.Lcd.pushImage( p3 + 5*px3, py3, 35,67, (uint16_t *)m[11]); delay(25); M5.Lcd.pushImage( p3 + 2*px3, py3, 35,67, (uint16_t *)m[10]); M5.Lcd.pushImage( p3 + 5*px3, py3, 35,67, (uint16_t *)m[10]); delay(25); } } void fade2(){ int p3 = 2; int px3 = 40; int py3 = 150; for ( int i = 0; i < 2; i++ ){ M5.Lcd.fillCircle(156,151,3,BLACK);M5.Lcd.fillCircle(156,191,3,BLACK); delay(25); M5.Lcd.fillCircle(156,151,3,ORANGE);M5.Lcd.fillCircle(156,191,3,ORANGE); delay(25); } } void periodic_ntp(){ // Adjust to ntp at hh mm ss if ( (hh == 1) & (mm == 0) & (ss == 0)){ // AM 1:00:00 wifi_setup(); rtc_setup(); } }
.
apple_35x41.c
.
/******************************************************************************* * generated by lcd-image-converter rev.c6da9ce from 2018-02-11 00:03:45 +0500 * image * filename: unsaved * name: apple_35x41 * macsbug * preset name: Color R5G6B5 * data block size: 8 bit(s), uint8_t * RLE compression enabled: no * conversion type: Color, not_used not_used * split to rows: yes * bits per pixel: 16 * * preprocess: * main scan direction: top_to_bottom * line scan direction: forward * inverse: no *******************************************************************************/ /* typedef struct { const uint8_t *data; uint16_t width; uint16_t height; uint8_t dataSize; } tImage; */ #include <stdint.h> static const uint8_t apple_35x41[2870] = { // ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙░▒∙∙∙∙∙∙∙∙∙∙ // ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙▒▓▓▓∙∙∙∙∙∙∙∙∙∙ // ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙▓▓▒▒▓∙∙∙∙∙∙∙∙∙∙ // ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙▓▒▒▒▒▒∙∙∙∙∙∙∙∙∙∙ // ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙▓▒▒▒▒▓░∙∙∙∙∙∙∙∙∙∙ // ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙░▓▒▒▒▒▓∙∙∙∙∙∙∙∙∙∙∙ // ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙▒▒▒▒▒▓░∙∙∙∙∙∙∙∙∙∙∙ // ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙▓▒▒▒▓▒∙∙∙∙∙∙∙∙∙∙∙∙ // ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙▓▒▓▓░∙∙∙∙∙∙∙∙∙∙∙∙∙ // ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙▓▓░∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙ // ∙∙∙∙∙∙░▒▓▓▓▓▓▒░∙∙∙∙∙∙∙▒▓▓▓▓▓▓▒∙∙∙∙∙ // ∙∙∙∙∙▓▓▒▒▒▒▒▒▒▓▓▒░░░▒▓▓▒▒▒▒▒▒▓▓░∙∙∙ // ∙∙∙∙▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓▒▒▒▒▒▒▒▒▒▒▒▓░∙∙ // ∙∙∙▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓░∙ // ∙∙▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▒∙∙ // ∙∙█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▒∙∙∙ // ∙▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒∙∙∙∙ // ∙█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█∙∙∙∙∙ // ░█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒∙∙∙∙∙ // ▒█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█░∙∙∙∙∙ // ▒▓▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓∙∙∙∙∙∙ // ▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓∙∙∙∙∙∙ // ▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓∙∙∙∙∙∙ // ▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░∙∙∙∙∙ // ▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓∙∙∙∙∙ // ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒∙∙∙∙∙ // ∙▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒∙∙∙∙ // ∙▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░∙∙∙ // ∙▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░∙∙ // ∙∙▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒∙ // ∙∙▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ // ∙∙░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒∙ // ∙∙∙▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒∙ // ∙∙∙░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒∙∙ // ∙∙∙∙▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒∙∙ // ∙∙∙∙░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒∙∙∙ // ∙∙∙∙∙▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓░∙∙∙ // ∙∙∙∙∙∙▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░∙∙∙∙ // ∙∙∙∙∙∙∙▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒∙∙∙∙∙ // ∙∙∙∙∙∙∙∙▒▒▒▒▒▒▒░∙∙∙∙∙▒▒▒▒▒▒▒░∙∙∙∙∙∙ // ∙∙∙∙∙∙∙∙∙∙░▒░∙∙∙∙∙∙∙∙∙∙░░▒░∙∙∙∙∙∙∙∙ 0x21, 0x24, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x21, 0x64, 0x43, 0x87, 0x6d, 0xc9, 0x19, 0x03, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x21, 0x24, 0x08, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xc9, 0x7f, 0xaa, 0x6e, 0xe9, 0x87, 0xea, 0x10, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x61, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x62, 0x87, 0xeb, 0x6e, 0xc9, 0x65, 0xe8, 0x65, 0xe8, 0x77, 0x0a, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xe1, 0x87, 0xeb, 0x66, 0x08, 0x65, 0xe8, 0x65, 0xe8, 0x66, 0x08, 0x6e, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x0a, 0x66, 0x48, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x77, 0x49, 0x44, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x45, 0x77, 0x6a, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x7f, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x49, 0x66, 0x28, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x87, 0xea, 0x32, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x77, 0x2a, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x87, 0xea, 0x4c, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe1, 0x7f, 0x6a, 0x66, 0x08, 0x6f, 0x09, 0x87, 0xcb, 0x33, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc1, 0x08, 0xe1, 0x08, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe1, 0x8f, 0xec, 0x76, 0xea, 0x44, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xc1, 0x21, 0xe3, 0x19, 0xa2, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x04, 0x66, 0x29, 0x77, 0x0a, 0x7f, 0x4a, 0x7f, 0x4a, 0x7f, 0x2a, 0x76, 0xc9, 0x66, 0x29, 0x44, 0x26, 0x11, 0x42, 0x00, 0x00, 0x08, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xc2, 0x5d, 0x68, 0x76, 0xea, 0x7f, 0x4a, 0x77, 0x4a, 0x77, 0x4a, 0x7f, 0x4a, 0x6e, 0xaa, 0x4c, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x8a, 0x7f, 0x8a, 0x66, 0x48, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x66, 0x28, 0x6f, 0x09, 0x7f, 0x6a, 0x5d, 0xc8, 0x3b, 0x45, 0x2a, 0x83, 0x44, 0x26, 0x66, 0x49, 0x7f, 0x6a, 0x66, 0xa9, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x66, 0x08, 0x6f, 0x29, 0x7f, 0x8b, 0x2a, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x87, 0xab, 0x66, 0xa9, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x66, 0x29, 0x6e, 0xe9, 0x6f, 0x29, 0x6e, 0xc9, 0x66, 0x08, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x65, 0xe8, 0x66, 0x08, 0x87, 0xea, 0x3b, 0x85, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x67, 0x2b, 0x5e, 0x89, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x55, 0xe8, 0x97, 0xec, 0x3b, 0x45, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x5c, 0x86, 0x87, 0x48, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0x6d, 0xc8, 0xa7, 0x89, 0x4c, 0x66, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x21, 0xff, 0x85, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xff, 0x85, 0xab, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0xc4, 0x63, 0xfe, 0xc5, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfe, 0xc5, 0xc4, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0xff, 0x05, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x49, 0xe4, 0xff, 0x65, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfd, 0xc4, 0xfe, 0xa5, 0xc4, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x93, 0xa5, 0xfe, 0xe5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xfd, 0xc5, 0xff, 0x25, 0x51, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0xb3, 0x45, 0xfc, 0x64, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xf3, 0xe4, 0xfc, 0xc4, 0x28, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0xdb, 0xe5, 0xfc, 0x24, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xfc, 0x04, 0xfc, 0xe4, 0x20, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0xdb, 0xe5, 0xfc, 0x24, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xf4, 0x04, 0xfd, 0x04, 0x41, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0xcb, 0xc6, 0xfc, 0x44, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xf4, 0x24, 0xfc, 0xa4, 0x9a, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x92, 0xe5, 0xfd, 0x24, 0xf4, 0x64, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x84, 0xf4, 0x64, 0xfc, 0x84, 0xfc, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x61, 0x25, 0xfa, 0x28, 0xe1, 0xa7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xfa, 0x68, 0x28, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x30, 0xe4, 0xf9, 0xe8, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xd9, 0xc7, 0xe9, 0xc7, 0xf9, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0xa2, 0xfa, 0x08, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xfa, 0x08, 0x99, 0x45, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0xe1, 0xc7, 0xf1, 0xe7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xe1, 0xc7, 0xfa, 0x08, 0x89, 0x45, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x58, 0xc3, 0xfa, 0x07, 0xe9, 0xc4, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xe9, 0xc5, 0xfa, 0x07, 0xd9, 0x84, 0x30, 0xe2, 0x10, 0x82, 0x00, 0x00, 0xd2, 0x34, 0xa9, 0xf0, 0xa1, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa9, 0xf0, 0xa1, 0xef, 0xe2, 0x34, 0xa1, 0xed, 0x10, 0x82, 0x00, 0x00, 0x71, 0xb1, 0xa2, 0x16, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x91, 0xf3, 0x89, 0xf3, 0xb2, 0x59, 0x18, 0xe5, 0x10, 0x82, 0x00, 0x00, 0x08, 0x20, 0xc2, 0x58, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0xa2, 0x13, 0xa2, 0x13, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x81, 0xaf, 0xaa, 0x15, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0x91, 0xf2, 0xc2, 0x58, 0x20, 0x64, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x58, 0xb9, 0x71, 0xb9, 0x51, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x71, 0xb9, 0x51, 0xb1, 0x51, 0xc9, 0xb3, 0x9a, 0x12, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x0d, 0x4c, 0xff, 0x3b, 0x97, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x3b, 0xb8, 0x54, 0xff, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xff, 0x05, 0xff, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x5c, 0x05, 0x3c, 0x07, 0x3f, 0x03, 0x50, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x3f, 0x05, 0x7e, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x05, 0x1c, 0x05, 0x1c, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x06, 0x5f, 0x04, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x10, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x5f, 0x05, 0xbf, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x05, 0x1c, 0x05, 0xff, 0x06, 0x1f, 0x05, 0xbf, 0x05, 0xbf, 0x05, 0xff, 0x06, 0x1f, 0x05, 0x7f, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x04, 0xfb, 0x05, 0x1b, 0x06, 0x9f, 0x04, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x08, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x1c, 0x06, 0x9f, 0x05, 0x9f, 0x05, 0x3d, 0x05, 0x7f, 0x06, 0x5f, 0x05, 0xbf, 0x02, 0xcf, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xa8, 0x04, 0x99, 0x06, 0x5f, 0x06, 0x1f, 0x05, 0x5e, 0x05, 0x3d, 0x06, 0x1f, 0x06, 0x9f, 0x02, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x61, 0x21, 0x24, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x11, 0xa8, 0x1b, 0xd4, 0x14, 0x98, 0x13, 0xd4, 0x11, 0xc9, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0xa3, 0x12, 0xad, 0x1c, 0x15, 0x1c, 0x77, 0x1a, 0xef, 0x10, 0xc3, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x10, 0x82, 0x21, 0x24 };
.
M5Stack nixie tube clock , DS3231 , RTC , VFD , Nixie tube , ニキシー管 , Hex File
.cファイルの作り方よくわかりません。
inoファイルと同じフォルダに、
.cフォルダをそれぞれ作りましたが、
M5Stack_nixie_tube_clock:11:40: fatal error: vfd_18x34.c: No such file or directory
のエラーが出てしまいます。。
kiki
7月 3, 2020 at 2:01 pm
kikiさんへ、サイトの訪問をありがとうございます。
記事下のスケッチの所にある M5Stack_nixie_tube_clock.zip は DLし 解凍できたでしょうか。
DLしコンパイルをしてエラーはでない事を確認しました。この動くスケッチを確認後に参考にしたほうが良いです。
>.cファイルの作り方よくわかりません。
DLした .cファイル の文字の書き方やデーターを比較すると解りやすいです。
もしくは検索して勉強するしかないです。
先頭に #include の記述や
static const uint8_t vfd_18x34_0[1224] にある 型(static const uint8_t)、名前(vfd_18x34_0)、サイズ(1224)が合っていないとエラーになります。
>No such file or directory
その file が スケッチファイルの中に無い事を示しています。
正:#include “vfd_18x34.c”
誤:#include <vfd_18x34.c>
#include の後の ” ” は 同じスケッチファイルの中にある事をしていています。
Library 等は スケッチフォルダーの外にありますので 記述は #include <vfd_18x34.c>で記述する事になります。
macsbug
7月 3, 2020 at 4:44 pm
主さま。
ありがとうございます。とても素敵な時計なのでぜひ試してみたいと思っております。
ご指示いただいたようにやってみました。
どうにかM5stickCでのコンパイルはうまくいきました。
がんばってM5stackのコンパイルをしておりますが、
もう少しでうまくいきそうです。
今のところ、下記のエラーが出るところまで進みました。。
M5Stack_nixie_tube_clock2:226:61: error: array subscript is above array bounds [-Werror=array-bounds]
M5.Lcd.pushImage( p3 + 2*px3, py3, 35,67, (uint16_t *)m[11]);
よく意味が分からず困っておりますが、もう少し頑張ってみます。
今後とも何卒よろしくお願いします。
kiki
kiki
7月 3, 2020 at 5:48 pm
私は最初は分からずでしたが なんとか NixIe Tube を出したく 何度も試していました。
M5Stack nixie tube clock : 2019.06.16 macsbug のリストを見ました。
13行目
<>が使用されています。これでは file errorになります。” に治してください。ごめんなさい。
259行目
M5.Lcd.pushImage( p3 + 2*px3, py3, 35,67, (uint16_t *)m[11]);
X軸 p3 + 2*px3 : p3=2, px3=40, X=42
Y軸 py3 : Y=150
画面 X=42, Y=150 の場所に mの画像を表示。
Xの画像の幅 35 : vfd_35x67.c の Xのサイズ
Yの画像の幅 67 : vfd_35x67.c の Yのサイズ、このサイズが合わないと表示されません。
m[11]) の画像 : const uint8_t*m[] = { // vfd font 35×67 の 0 から 9,q,n までの画像。ここでは 11 ですので vfd_35x67_n を表示します。
m[ ] の配列は vfd_35x67_0,1,2,3,4,5,6,7,8,9,vfd_35x67_q,vfd_35x67_n の画像が入っています。
これができると 画像表示でなんでもできる様になりますね。
macsbug
7月 3, 2020 at 6:52 pm
ありがとうございます。このファイルをダウンロードして使ってみます。
Down Load:M5Stack_nixie_tube_clock.zip:誤記修正版((11行目)。2020.07.03
しかし、ファイルの拡張子がPDFでした。。
zipに直してdownloadできました。
いろいろ教えていただき助かりました。
なんかこんなエラーが出ております。
C:\Users\7776\AppData\Local\Temp\arduino_build\sketch\RTClib.cpp: In member function ‘char* DateTime::toString(char*)’:
C:\Users\7776\AppData\Local\Temp\arduino_build\sketch\RTClib.cpp:543:7: warning: ‘isPM’ may be used uninitialized in this function [-Wmaybe-uninitialized]
if (isPM) {
^
C:\Users\7776\AppData\Local\Temp\arduino_build\sketch\RTClib.cpp:492:51: warning: ‘hourReformatted’ may be used uninitialized in this function [-Wmaybe-uninitialized]
buffer[i + 1] = ‘0’ + hourReformatted % 10;
^
C:\Users\7776\Desktop\M5Stack_nixie_tube_clock2\M5Stack_nixie_tube_clock2.ino: In function ‘void fade2()’:
C:\Users\7776\Desktop\M5Stack_nixie_tube_clock2\M5Stack_nixie_tube_clock2.ino:236:7: warning: unused variable ‘p3’ [-Wunused-variable]
int p3 = 2; int px3 = 40; int py3 = 150;
^
C:\Users\7776\Desktop\M5Stack_nixie_tube_clock2\M5Stack_nixie_tube_clock2.ino:236:19: warning: unused variable ‘px3’ [-Wunused-variable]
int p3 = 2; int px3 = 40; int py3 = 150;
^
C:\Users\7776\Desktop\M5Stack_nixie_tube_clock2\M5Stack_nixie_tube_clock2.ino:236:33: warning: unused variable ‘py3’ [-Wunused-variable]
int p3 = 2; int px3 = 40; int py3 = 150;
^
C:\Users\7776\Desktop\M5Stack_nixie_tube_clock2\M5Stack_nixie_tube_clock2.ino: In function ‘void fade1()’:
M5Stack_nixie_tube_clock2:226:61: error: array subscript is above array bounds [-Werror=array-bounds]
M5.Lcd.pushImage( p3 + 2*px3, py3, 35,67, (uint16_t *)m[11]);
^
M5Stack_nixie_tube_clock2:227:61: error: array subscript is above array bounds [-Werror=array-bounds]
M5.Lcd.pushImage( p3 + 5*px3, py3, 35,67, (uint16_t *)m[11]);
^
M5Stack_nixie_tube_clock2:229:61: error: array subscript is above array bounds [-Werror=array-bounds]
M5.Lcd.pushImage( p3 + 2*px3, py3, 35,67, (uint16_t *)m[10]);
^
M5Stack_nixie_tube_clock2:230:61: error: array subscript is above array bounds [-Werror=array-bounds]
M5.Lcd.pushImage( p3 + 5*px3, py3, 35,67, (uint16_t *)m[10]);
^
C:\Users\7776\Desktop\M5Stack_nixie_tube_clock2\M5Stack_nixie_tube_clock2.ino: In function ‘void yyyy_mmdd_hhmmss()’:
M5Stack_nixie_tube_clock2:147:61: error: array subscript is above array bounds [-Werror=array-bounds]
M5.Lcd.pushImage( p3 + 2*px3, py3, 35,67, (uint16_t *)m[10]);
^
M5Stack_nixie_tube_clock2:150:61: error: array subscript is above array bounds [-Werror=array-bounds]
M5.Lcd.pushImage( p3 + 5*px3, py3, 35,67, (uint16_t *)m[10]);
kii
7月 4, 2020 at 9:56 am
申し訳ありません。修正時に確認したはずですが、今、 DLし確認しましたら 誤記がありました。
11行目 #include “vfd_18x34.c” // font 18px34 に変更して再度アップしコンパイルできる事を確認いたしました。
1. WordPress では .zip は投稿できず pdf にして投稿しています。
2. 誤記のままでコンパイルしても 記載されている「表示」はでませんでした。
3. Arduino IDE 1.8.13 で コンパイル時に沢山の「表示」はします。エラーとは「ERROR」が表示された所です。それ以外は「ERROR」ではありません。
経験的に 多くの表示や ERROR は Library の混在や重複による表示が多いです。たまに Libaray 側で名前や誤記訂正で変更になった時もコンパイルができない時もあります。
macsbug
7月 4, 2020 at 11:14 am
主さま。
ありがとうございます!
無事にコンパイルがとおりました。
主さまのおかげです!!!
“C:\\Users\\7776\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-80-g6c4433a-5.2.0/bin/xtensa-esp32-elf-size” -A “C:\\Users\\7776\\AppData\\Local\\Temp\\arduino_build/M5Stack_nixie_tube_clock2.ino.elf”
最大1310720バイトのフラッシュメモリのうち、スケッチが1096682バイト(83%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が41264バイト(12%)を使っていて、ローカル変数で286416バイト使うことができます。
kiki
kiki
7月 4, 2020 at 10:26 am
コンパイルできましたか、よかったです。
こちらでの間違いを指摘していただき助かりました。
スケッチのCLOCKは ハードの RTC が必要であることや ネット接続で NTP 取得もあり 準備が必要です。
スケッチは RTC や NTP 接続がなくとも 接続無しと表示しながら先に進む様にしています。その場合は 0 (ゼロ) を表示します。
時刻表示の為の 画面での位置や、どの数値を表示するかは、PRINT文の様に簡単にいかず、面倒な所があります。
macsbug
7月 4, 2020 at 11:20 am
本当にありがとうございました。
ブルー色もできました。
どちらもとても綺麗でうっとりしております。
今後もmacsbug様のいろいろなプログラムを楽しみにしております。
どうぞよろしくお願いします。
kiki
7月 4, 2020 at 11:49 am
はじめまして。
自分もM5Stackにニキシー管画像を使いたくてここにたどり着きました。
ここのニキシー管画像を自分のM5Stackに使わせていただくことは可能でしょうか。
うまだ (@technerd)
9月 8, 2021 at 7:59 am
訪問と連絡をありがとうございます。
是非、ご自由にご使用ください。
むしろ、M5Stackとニキシー管画像の使用をお願いしたいくらいです。
macsbug
9月 8, 2021 at 8:56 am
ご快諾ありがとうございます!
どんどん画像使っていきます!!!
うまだ (@technerd)
9月 8, 2021 at 6:25 pm