Hi
I'm trying to get a dox matrix that uses 6 matrix displays driven by MAX7219 chips to display the time.
My setup also includes an RTC based on PCF 8563. Everything is connected to an arduino Mega 2560.
So far I got the matrix to display a 3 line string of characters and the RTC time displayed in the serial monitor.
Can someone help so I can display the time on the matrix display ?
The code is below and is based on parola library and a code for the RTC that I found online.
// Program to demonstrate the MD_Parola library
//
// For every string defined by pc[] iterate through all combinations
// of entry and exit effects.
//
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <Wire.h>
#include <Rtc_Pcf8563.h>
//init the real time clock
Rtc_Pcf8563 rtc;
// Define the number of devices we have in the chain and the hardware interface
// NOTE: These pin numbers will probably not work with your hardware and may
// need to be adapted
#define MAX_DEVICES 6
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
// set to 1 if we are implementing the user interface pot
#define USE_UI_CONTROL 0
#if USE_UI_CONTROL
#define SPEED_IN A0
#endif // USE_UI_CONTROL
#define PAUSE_TIME 1000
#define SPEED_DEADBAND 5
uint8_t frameDelay = 25; // default frame delay value
MD_Parola P = MD_Parola(DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
#define SPEED_TIME 10
#define PAUSE_TIME 1000
#define PRINT(s, x)
#define PRINTS(x)
#define PRINTX(x)
// Global variables
uint8_t curText;
char *pc[] =
{
"This is",
"Just a",
"Test",
};
uint8_t inFX, outFX;
MD_Parola::textEffect_t effect[] =
{
MD_Parola::PRINT,
MD_Parola::SCROLL_LEFT,
MD_Parola::WIPE,
MD_Parola::SCROLL_UP,
MD_Parola::OPENING_CURSOR,
MD_Parola::BLINDS,
MD_Parola::CLOSING,
MD_Parola::WIPE_CURSOR,
MD_Parola::DISSOLVE,
MD_Parola::OPENING,
MD_Parola::CLOSING_CURSOR,
MD_Parola::SCROLL_RIGHT,
MD_Parola::SCROLL_DOWN,
MD_Parola::SLICE,
};
void setup(void)
{
Serial.begin(57600);
//clear out the registers
//rtc.initClock();
//set a time to start with.
//day, weekday, month, century(1=1900, 0=2000), year(0-99)
// uncomment to set
//rtc.setDate(30, 1, 12, 0, 13);
//hr, min, sec
//uncomment to set
//rtc.setTime(18, 42, 0);
P.begin();
P.setInvert(false);
P.displayText(pc[curText], MD_Parola::CENTER, SPEED_TIME, PAUSE_TIME, effect[inFX], effect[outFX]);
}
void loop(void)
{
Serial.print(rtc.formatTime());
Serial.print("\r\n");
if (P.displayAnimate()) // animates and returns true when an animation is completed
{
// Set the display for the next string.
curText = (++curText) % ARRAY_SIZE(pc);
P.setTextBuffer(pc[curText]);
// When we have gone back to the first string, set a new exit effect
// and when we have done all those set a new entry effect.
if (curText == 0)
{
outFX = (++outFX) % ARRAY_SIZE(effect);
if (outFX == 0)
{
inFX = (++inFX) % ARRAY_SIZE(effect);
if (inFX == 0)
P.setInvert(!P.getInvert());
}
P.setTextEffect(effect[inFX], effect[outFX]);
}
// Tell Parola we have a new animation
P.displayReset();
}
}