Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "main.h" #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define MAX_DEVICES 8 #define CS1 27 #define CS2 26 #define SEC2PS(x) ((x) * 1000000) #define SEC2MS(x) ((x) * 1000) const char ssid[] = "Tuldok-House"; const char pass[] = "HelloWorld"; MD_Parola* line1; MD_Parola* line2; MBED_RPI_PICO_Timer clockTimer(0); MBED_RPI_PICO_Timer updateTimer(1); WiFiUDP ntpUdp; NTPClient timeClient(ntpUdp, "time.google.com", 0, SEC2MS(64)); void setup() { Serial.begin(115200); // USB UART Serial1.begin(115200); // Serial line to the ESP-01 WiFi module initWiFi(); initSpi(); initDisplay(); initTime(); initTimer(); } void loop() { timeClient.update(); sleep_ms(500); } void clockTick(uint alarmNum) { time_t now; char buf[16]; time(&now); auto tm = localtime(&now); strftime(buf, 16, "%m/%d/%Y", tm); line1->setTextAlignment(PA_CENTER); line1->print(buf); strftime(buf, 16, "%I:%M:%S %P", tm); line2->setTextAlignment(PA_CENTER); line2->print(buf); } void syncRtcTick(uint alarmNum) { timeval tv {.tv_sec = timeClient.getEpochTime()}; settimeofday(&tv, NULL); } void initWiFi() { WiFi.init(Serial1); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println("WiFi connected."); } void initDisplay() { line1 = new MD_Parola(HARDWARE_TYPE, SPI, CS1, 8); line2 = new MD_Parola(HARDWARE_TYPE, SPI, CS2, 8); line1->begin(); line2->begin(); line1->setIntensity(15); line2->setIntensity(15); line1->displayClear(); line2->displayClear(); } void initTimer() { // clock tick interrupt clockTimer.attachInterruptInterval(SEC2PS(1), clockTick); // rtc sync interrupt updateTimer.attachInterrupt(SEC2PS(5*60), syncRtcTick); } void initTime() { setenv("TZ", "Asia/Manila", 1); tzset(); timeClient.update(); timeval tv {.tv_sec = timeClient.getEpochTime()}; settimeofday(&tv, NULL); } void initSpi() { SPI.begin(); pinMode(CS1, OUTPUT); pinMode(CS2, OUTPUT); }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)