前の記事で、Arduino UNO R4 WiFi内蔵のRTCの書き込みと読み出し方を勉強しました。前の記事はこちら。
今回は、ネット上のNTPサーバーに接続して現在の時刻を取得して、その値をArduino UNO R4 WiFiのLEDMatrixにスクロール表示してみます。
まず、Arduino IDEでスケッチ例のRTCの中の「RTC_NTPSync」というスケッチを開き適当な名前でスケッチを保存し、このスケッチが動作するようにします。
新しいタブを開き、「arduino_secrets.h」という名前で、次のようなスケッチを書き、保存します。
---------------------------------------------------------
#define SECRET_SSID "************" //無線LANルーターのSSID
#define SECRET_PASS "************" //無線LANルーターのパスワード
---------------------------------------------------------
#define SECRET_PASS "************" //無線LANルーターのパスワード
---------------------------------------------------------
これで、チェック(検証)をします。
不足しているライブラリがあれば、ライブラリマネージャーを使ってライブラリをインストールします。
エラーがでなければ、Arduino UNO R4 WiFiを接続して、コンパイル書き込みをします。
数秒後、うまくNTPサーバーに接続できると次のようにシリアルモニタに表示されます。(これは私の場合です。)
--------------------------------------------------------------------
Connected to WiFi
SSID: ********
IP Address: ***.***.**.**
signal strength (RSSI):-58 dBm
Starting connection to server...
Unix time = 1708698196
The RTC was just set to :2024-02-23T14:23:16
-------------------------------------------------------------------
時刻は、JSTに対してー7時間で表示されます。
NTPサーバーへの接続が確認できたら、LEDMatrixにスクロール表示するように次のようにスケッチを加えます。
次の2つのライブラリをincludeします。
#include "ArduinoGraphics.h"
#include "Arduino_LED_Matrix.h"
更に
ArduinoLEDMatrix matrix;
#include "Arduino_LED_Matrix.h"
更に
ArduinoLEDMatrix matrix;
を入れます。
次に setup()に
matrix.begin();
を書き入れます。
を書き入れます。
loop()は次のように書きました。
----------------------------------------------------
void loop(){
RTCTime currentTime;
RTC.getTime(currentTime);
String NowTime = String(currentTime);
Serial.println(NowTime);
// Make it scroll!
matrix.beginDraw();
matrix.stroke(0xFFFFFFFF);
matrix.textScrollSpeed(70);
matrix.textFont(Font_5x7);
matrix.beginText(0, 1, 0xFFFFFF);
matrix.println(" " + NowTime + " ");
matrix.endText(SCROLL_LEFT);
matrix.endDraw();
}
RTCTime currentTime;
RTC.getTime(currentTime);
String NowTime = String(currentTime);
Serial.println(NowTime);
// Make it scroll!
matrix.beginDraw();
matrix.stroke(0xFFFFFFFF);
matrix.textScrollSpeed(70);
matrix.textFont(Font_5x7);
matrix.beginText(0, 1, 0xFFFFFF);
matrix.println(" " + NowTime + " ");
matrix.endText(SCROLL_LEFT);
matrix.endDraw();
}
----------------------------------------------------
コンパイル書き込みをするとシリアルモニタに現在時刻が表示され、続いてLEDMatrixに時刻が約10秒間隔でスクロール表示されます。