Arduinoで作ろう(63) UNO R4 WiFiでスクロールNTP時計
Arduino UNO R4 WiFi を手に入れました。
なんと言っても目を引くのはオンボードの 12×8ドットマトリクスLEDじゃないでしょうか。あと,ESP32-S3モジュールね。なんだか夢が広がりますなあ(^^)
pinoutはこんな感じ ↓
せっかくESP32モジュールとLEDマトリクスを積んでるんだから,WiFiでネット接続してNTPサーバから時刻を取得してドットマトリクスLEDでスクロールする時計を作らないとね。( また時計かw )
んで,とりあえずできました。ライブラリは新たに2つくらい入れたんだったかな。NTPClientライブラリとArduinoGraphicsライブラリです。たぶん。
// Arduino UNO R4 WiFi スクロールNTP時計
// NTPClient library (https://github.com/arduino-libraries/NTPClient)
// ArduinoGraphics library (https://github.com/arduino-libraries/ArduinoGraphics)
#include "RTC.h"
#include "NTPClient.h"
#include "ArduinoGraphics.h"
#include "Arduino_LED_Matrix.h"
#include "WiFiS3.h"
#include "WiFiUdp.h"
char ssid[] = "ここに無線LANのSSIDを書く" ;
char pass[] = "ここにパスワードを書く" ; //
int wifiStatus = WL_IDLE_STATUS;
WiFiUDP Udp;
NTPClient timeClient(Udp);
ArduinoLEDMatrix matrix;void printWifiStatus() {
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
}void connectToWiFi(){
if (WiFi.status() == WL_NO_MODULE) {
Serial.println("Communication with WiFi module failed!");
while (true);
}while (wifiStatus != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
wifiStatus = WiFi.begin(ssid, pass);
delay(10000);
}Serial.println("Connected to WiFi");
printWifiStatus();
}void setup(){
Serial.begin(9600);
while (!Serial);connectToWiFi();
RTC.begin();
matrix.begin();
Serial.println("\nStarting connection to server...");
timeClient.begin();
timeClient.update();
auto timeZoneOffsetHours = 9;
auto unixTime = timeClient.getEpochTime() + (timeZoneOffsetHours * 3600);
Serial.print("Unix time = ");
Serial.println(unixTime);
RTCTime timeToSet = RTCTime(unixTime);
RTC.setTime(timeToSet);
RTCTime currentTime;
RTC.getTime(currentTime);
Serial.println("The RTC was just set to: " + String(currentTime));
}void loop(){
char buff[16] ;
const char *wd[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
RTCTime currentTime;
RTC.getTime(currentTime);
sprintf(buff, " %04u/%02u/%02u(%s) ", currentTime.getYear(), Month2int(currentTime.getMonth()), currentTime.getDayOfMonth(),wd[(int)currentTime.getDayOfWeek()]) ;
matrix.beginDraw();
matrix.stroke(0xFFFFFFFF);
matrix.textScrollSpeed(50);
matrix.textFont(Font_5x7);
matrix.beginText(0, 1, 0xFFFFFF);
matrix.println(buff);
matrix.endText(SCROLL_LEFT);
matrix.endDraw();sprintf(buff, " %02u:%02u:%02u ", currentTime.getHour(), currentTime.getMinutes(), currentTime.getSeconds()) ;
matrix.beginDraw();
matrix.stroke(0xFFFFFFFF);
matrix.textScrollSpeed(50);
matrix.textFont(Font_5x7);
matrix.beginText(0, 1, 0xFFFFFF);
matrix.println(buff);
matrix.endText(SCROLL_LEFT);
matrix.endDraw();
}
サンプルスケッチを参考にして,ツギハギで作ったので あんまり美しいコードではないですが,とりあえず動いてます。Arduino IDE のシリアルモニタで,無線LANアクセスポイントに接続したことを確認できるようになってます。まあ確認しなくても大丈夫ですが。
| 固定リンク | 0
「Arduino」カテゴリの記事
- ATtiny402 + LM35DZ で温度計(2024.09.21)
- aitendo「ESP-32でいいの」っぽい謎ボードでLチカ(2024.04.17)
- ATtiny202 で Hello World!(2024.03.25)
- CH32V003+I2C接続のLCDでHello World !(2023.12.29)
- CH32V003F4P6 開発ボードでLチカ(2023.12.20)