I threw this one together and modify it as necessary to try various items.
#include <Time.h>
#include <TimeAlarms.h>
AlarmID_t morningAlarmID=99, afternoonAlarmID=99, eveningAlarmID=99;
AlarmID_t tuesdayAlarmID=99, wednesdayAlarmID=99, thursdayAlarmID=99,
fridayAlarmID=99, saturdayAlarmID=99, sundayAlarmID=99;
char buf[100];
void setup()
{
Serial.begin(57600);
Serial.println("Initializing...");
delay(2000);
setTime(0,0,0,1,1,1971);
// morningAlarmID = Alarm.alarmRepeat(8,30,0, onAlarm);
// afternoonAlarmID = Alarm.alarmRepeat(13,25,0,onAlarm);
// eveningAlarmID = Alarm.alarmRepeat(17,45,0,onAlarm);
// tuesdayAlarmID = Alarm.alarmRepeat(dowTuesday,17,45,0,onAlarm);
// wednesdayAlarmID = Alarm.alarmRepeat(dowWednesday,17,45,0,onAlarm);
// thursdayAlarmID = Alarm.alarmRepeat(dowThursday,17,45,0,onAlarm);
// fridayAlarmID = Alarm.alarmRepeat(dowFriday,17,45,0,onAlarm);
// sundayAlarmID = Alarm.alarmRepeat(dowSunday,17,45,0,onAlarm);
saturdayAlarmID = Alarm.alarmRepeat(dowSaturday,17,45,0,onAlarm);
pinMode(13, OUTPUT);
Serial.println("Begin test...");
}
void onAlarm()
{
// alarm callback function
AlarmId id = Alarm.getTriggeredAlarmId();
time_t tnow = now();
if (id == tuesdayAlarmID){
if(weekday(tnow) != dowTuesday || hour(tnow) != 17 || minute(tnow) != 45){
showMe("Tuesday error", tnow);
}
else{
// showMe("Tuesday OK", tnow);
}
}
if (id == wednesdayAlarmID){
if(weekday(tnow) != dowWednesday || hour(tnow) != 17 || minute(tnow) != 45){
// showMe("Wednesday error", tnow);
}
else{
// showMe("Wednesday OK", tnow);
}
}
if (id == thursdayAlarmID){
if(weekday(tnow) != dowThursday || hour(tnow) != 17 || minute(tnow) != 45){
showMe("Thursday error", tnow);
}
else{
// showMe("Thursday OK", tnow);
}
}
if (id == fridayAlarmID){
if(weekday(tnow) != dowFriday || hour(tnow) != 17 || minute(tnow) != 45){
showMe("Friday error", tnow);
}
else{
// showMe("Friday OK", tnow);
}
}
if (id == saturdayAlarmID){
if(weekday(tnow) != dowSaturday || hour(tnow) != 17 || minute(tnow) != 45){
showMe("Saturday error", tnow);
}
else{
showMe("Saturday OK", tnow);
}
}
if (id == sundayAlarmID){
if(weekday(tnow) != dowSunday || hour(tnow) != 17 || minute(tnow) != 45){
showMe("Sunday error", tnow);
}
else{
// showMe("Sunday OK", tnow);
}
}
if (id >= dtNBR_ALARMS){
showMe("Creepy ID", tnow);
}
if (id == dtINVALID_ALARM_ID) {
showMe("Invalid Alarm ID", tnow);
}
}
void showMe(char* type, time_t tnow){
sprintf(buf,"%s alarm %s, %d:%d:%d %d/%d/%d",type,dayStr(weekday(tnow)),
hour(tnow),minute(tnow),second(tnow),month(tnow),day(tnow),year(tnow));
Serial.println(buf);
}
int savedMonth = 0;
int savedDay = 0;
void loop()
{
if(savedDay != day()){ //just to let me know it's alive
savedDay = day();
digitalWrite(13, digitalRead(13)==HIGH?LOW:HIGH); // flip the led
}
if(savedMonth != month()){ // how far it's gotten
savedMonth = month();
sprintf(buf,"Time %d:%d:%d %d/%d/%d", hour(),minute(),second(),day(),month(),year());
Serial.println(buf);
}
Alarm.delay(0);
adjustTime(55);
// sprintf(buf,"Time %d:%d:%d %d/%d/%d", hour(),minute(),second(),day(),month(),year());
// Serial.println(buf);
}