// Thu vien module RTC
#include <Wire.h>
#include <RTClib.h>
//LED Ma tran
#include <MD_MAX72xx.h>
#include <MD_Parola.h>
#include <SPI.h>
RTC_DS1307 rtc;
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 4
#define CS_PIN 10
MD_Parola matrix = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
const unsigned long eventInterval = 20000;
unsigned long previousTime = 0;
void setup() {
while (!Serial);
Serial.begin(57600);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
matrix.begin();
matrix.setIntensity(0);
matrix.displayClear();
}
void loop() {
unsigned long currentTime = millis();
DateTime now = rtc.now();
String timeHour = String (now.hour(), DEC); //+1 HT gio
int int_timeHour = timeHour.toInt();
String timeMinute = String (now.minute(), DEC); // lay so phut
int int_timeMinute = timeMinute.toInt();
//kiem tra
if ((int_timeHour == 0) || (int_timeHour > 0) && (int_timeHour < 10)) {
timeHour = "0" + String (now.hour()+1, DEC);
}
if ((int_timeMinute == 0) || (int_timeMinute > 0) && (int_timeMinute < 10)) {
timeMinute = "0" + String (now.minute(), DEC);
}
String timeDisplay = timeHour + ":" + timeMinute; // hien thi thơi gian ln man hình led
char char_timeDisplay[timeDisplay.length() + 1];
timeDisplay.toCharArray(char_timeDisplay, timeDisplay.length() + 1);
String dateDisplay = String (now.day(), DEC) + " : " + String (now.month(), DEC); //hien thi ngay, thang
char char_dateDisplay[dateDisplay.length() + 1];
dateDisplay.toCharArray(char_dateDisplay, dateDisplay.length() + 1);
matrix.setTextAlignment(PA_CENTER);
matrix.print(char_timeDisplay);
delay(500);
if (currentTime - previousTime >= eventInterval) {
matrix.print(char_dateDisplay);
delay(5000);
previousTime = currentTime;
}
timeDisplay = timeHour + " " + timeMinute;
char_timeDisplay[timeDisplay.length() + 1];
timeDisplay.toCharArray(char_timeDisplay, timeDisplay.length() + 1);
matrix.print(char_timeDisplay);
delay(500);
/*
Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour() + 1, DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.print(" since midnight 1/1/1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");
DateTime future (now + TimeSpan(7, 12, 30, 6));
Serial.print(" now + 7d + 30s: ");
Serial.print(future.day(), DEC);
Serial.print('/');
Serial.print(future.month(), DEC);
Serial.print('/');
Serial.print(future.year(), DEC);
Serial.print(' ');
Serial.print(future.hour(), DEC);
Serial.print(':');
Serial.print(future.minute(), DEC);
Serial.print(':');
Serial.print(future.second(), DEC);
Serial.println();
Serial.println();
delay(500);
timeDisplay = timeHour + " " + timeMinute;
char_timeDisplay[timeDisplay.length()+1];
timeDisplay.toCharArray(char_timeDisplay,timeDisplay.length()+1);
matrix.print(char_timeDisplay);
*/
}