#include <MD_MAX72xx.h>
#include <WiFiUdp.h>
#include <NTPClient.h>
#include <TimeLib.h> // Or similar time handling library
// Define hardware connections (adjust as needed)
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
#define MAX_DEVICES 1 // Number of MAX7219 modules chained
MD_MAX72xx display = MD_MAX72xx(DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
// WiFi credentials
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
// NTP client setup
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", 7 * 3600); // Adjust for your timezone offset in seconds
void setup() {
Serial.begin(115200);
display.begin();
display.setIntensity(7); // Adjust brightness (0-15)
// Connect to WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected.");
// Initialize NTP client
timeClient.begin();
}
void loop() {
timeClient.update(); // Update time from NTP server
time_t epochTime = timeClient.getEpochTime();
// Get current time components
int currentHour = hour(epochTime);
int currentMinute = minute(epochTime);
int currentSecond = second(epochTime);
// Display time on 7-segment display
display.setChar(7, currentSecond % 10);
display.setChar(6, currentSecond / 10);
display.setChar(5, currentMinute % 10);
display.setChar(4, currentMinute / 10);
display.setChar(3, currentHour % 10);
display.setChar(2, currentHour / 10);
// You can add separators or date information on remaining digits
delay(1000); // Update every second
}