#include <MD_Parola.h>
#include "RTClib.h"
RTC_DS1307 RTC;
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 4
#define CLK_PIN 18
#define DATA_PIN 23
#define CS_PIN 5
int i = 9;
int Animation;
String RandAn;
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
char daysOfTheWeek[7][12] = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"};
char monthOfTheYear[12][12] = {"JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBAR", "OCTOBER", "NOVEMBER", "DECEMBER"};
struct sCatalog
{
textEffect_t effect;
const char * psz;
uint16_t speed;
uint16_t pause;
};
sCatalog catalog[] =
{
{ PA_PRINT, "", 80, 3000 },
{ PA_SCROLL_UP, "", 80, 3000 },
{ PA_SCROLL_DOWN, "", 80, 3000 },
{ PA_SCROLL_LEFT, "", 80, 3000 },
{ PA_SCROLL_RIGHT, "", 80, 3000 },
{ PA_SPRITE, "", 80, 3000 },
{ PA_SLICE, "", 0, 3000 },
{ PA_MESH, "", 150, 3000 },
{ PA_FADE, "", 250, 3000 },
{ PA_DISSOLVE, "", 500, 3000 },
{ PA_BLINDS, "", 120, 3000 },
{ PA_RANDOM, "", 50, 3000 },
{ PA_WIPE, "", 80, 3000 },
{ PA_WIPE_CURSOR, "", 80, 3000 },
{ PA_SCAN_HORIZ, "", 80, 3000 },
{ PA_SCAN_HORIZX, "", 80, 3000 },
{ PA_SCAN_VERT, "", 80, 3000 },
{ PA_SCAN_VERTX, "", 80, 3000 },
{ PA_OPENING, "", 80, 3000 },
{ PA_OPENING_CURSOR, "", 80, 3000 },
{ PA_CLOSING, "", 80, 3000 },
{ PA_CLOSING_CURSOR, "", 80, 3000 },
{ PA_SCROLL_UP_LEFT, "", 80, 3000 },
{ PA_SCROLL_UP_RIGHT, "", 80, 3000 },
{ PA_SCROLL_DOWN_LEFT, "", 80, 3000 },
{ PA_SCROLL_DOWN_RIGHT, "", 80, 3000 },
{ PA_GROW_UP, "", 80, 3000 },
{ PA_GROW_DOWN, "", 80, 3000 },
};
// Sprite Definitions
const uint8_t F_PMAN1 = 6;
const uint8_t W_PMAN1 = 8;
static const uint8_t PROGMEM pacman1[F_PMAN1 * W_PMAN1] = // gobbling pacman animation
{
0x00, 0x81, 0xc3, 0xe7, 0xff, 0x7e, 0x7e, 0x3c,
0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c,
0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c,
0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c,
0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c,
0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c,
};
const uint8_t F_PMAN2 = 6;
const uint8_t W_PMAN2 = 18;
static const uint8_t PROGMEM pacman2[F_PMAN2 * W_PMAN2] = // ghost pursued by a pacman
{
0x00, 0x81, 0xc3, 0xe7, 0xff, 0x7e, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x7b, 0xf3, 0x7f, 0xfb, 0x73, 0xfe,
0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x7b, 0xf3, 0x7f, 0xfb, 0x73, 0xfe,
0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x7b, 0xf3, 0x7f, 0xfb, 0x73, 0xfe,
0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x73, 0xfb, 0x7f, 0xf3, 0x7b, 0xfe,
0x24, 0x66, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x73, 0xfb, 0x7f, 0xf3, 0x7b, 0xfe,
0x00, 0x42, 0xe7, 0xe7, 0xff, 0xff, 0x7e, 0x3c, 0x00, 0x00, 0x00, 0xfe, 0x73, 0xfb, 0x7f, 0xf3, 0x7b, 0xfe,
};
void setup()
{
//Serial.begin(9600);
P.begin();
P.setInvert(false);
P.setIntensity(0);
Wire.begin();
RTC.begin();
Serial.begin(9600);
if (! RTC.isrunning())
{
//Serial.println("RTC is NOT running!");
RTC.adjust(DateTime(__DATE__, __TIME__));
}
#if ENA_SPRITE
P.setSpriteData(pacman1, W_PMAN1, F_PMAN1, pacman2, W_PMAN2, F_PMAN2);
#endif
P.displayText("ViTechs Digital Clock", PA_CENTER, 50, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
while (!P.displayAnimate());
}
const char *ZiuaCurenta = " ";
String Hour;
String TIMP = " ";
String ORA = " ";
String MINUT = " ";
String SECUNDA = " ";
String DATA = "";
String Day;
String Month;
String Year;
String HumSTR;
String CelSTR;
String FarSTR;
bool dtt;
void loop()
{
DateTime now = RTC.now();
String DayOfWeek = daysOfTheWeek[now.dayOfTheWeek()];
String MonthOfYear = monthOfTheYear[now.month() - 1];
const char *DayOfWeekC = DayOfWeek.c_str();
const char *MonthOfYearC = MonthOfYear.c_str();
ORA = (now.hour());
if (ORA.length() < 2)
{
ORA = "0" + ORA;
}
MINUT = (now.minute());
if (MINUT.length() < 2)
{
MINUT = "0" + MINUT;
}
TIMP = ORA + ":" + MINUT;
const char *Timp = TIMP.c_str();
Day = now.day();
Month = now.month();
Year = now.year();
const char *Ziua = Day.c_str();
const char *Luna = Month.c_str();
const char *Anul = Year.c_str();
String Date = String(Day) + " " + MonthOfYearC + " " + String(Year) + " ." + DayOfWeekC;
const char *Data = Date.c_str();
if (i == 6)
{
//Animation = 3;
Serial.println(Animation );
P.displayText(DayOfWeekC, PA_CENTER, 50, 0, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
while (!P.displayAnimate());
}
if (i == 6)
{
//Animation = 3;
Serial.println(Animation );
P.displayText(Ziua, PA_CENTER, catalog[Animation].speed, catalog[Animation].pause, catalog[Animation].effect, catalog[Animation].effect);
while (!P.displayAnimate());
}
if (i == 6)
{
// Animation =3;
Serial.println(Animation );
P.displayText(MonthOfYearC, PA_CENTER, catalog[Animation].speed, catalog[Animation].pause, catalog[Animation].effect, catalog[Animation].effect);
while (!P.displayAnimate());
}
if (i == 2)
{
//Animation = 3;
//Serial.println(Animation );
dtt = !dtt;
P.displayText(Data, PA_CENTER, 50, 100, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
while (!P.displayAnimate());
}
if (i == 1)
{
Animation ++;
if (Animation > 29)Animation = 0;
Serial.println(Animation );
P.displayText(Timp, PA_CENTER, catalog[Animation].speed, 5000, catalog[Animation].effect, catalog[Animation].effect);
while (!P.displayAnimate());
}
//Serial.println(Animation);
i++;
if (i > 3)
{
i = 1;
};
}