#define max_chanels 15 // 3x RGBWW
#define max_programs 15 // should be at least max_chanels
#define max_events 100 // max. changes per day
...
#define max_nameLength 12 // maximum length of program name
...
class cEvent
{
public:
long time; // timestamp | milliseconds until 00:00
byte bright; // brightness | 0-255
};
class cProgram
{
public:
char name[max_nameLength];
cEvent arrEvents[max_events];
int SizeArrEvent; // size of the array arrEvents
};
...
cProgram arrPrograms[max_programs]; // array of all possible programs
cProgram arrTmpProg[max_chanels]; // array of temporary programs for each chanel
That's 9420 bytes of RAM gone right there. What Arduino are you planning to run this on?