0
Στο παρακάτω sketch προσπαθώ να ενεργοποιείτε το alarm κάθε δεύτερη μέρα παρόλα αυτά για κάποιο λόγο δεν γίνεται.
Χρησιμοποιώ όπως θα δείτε την bool skipToday και μετά το void loop() AlarmAction
if (skipToday) {
skipToday = false; //come back tomorrow
} else {
Serial.println("Turned on potisma");
skipToday = true; //not your day tomorrow
}
Παρακάτω έχω όλο τον κώδικα. Κάποιος καμμιά ιδέα;
Κώδικας:
#include <TimeAlarms.h> #include <Wire.h> #include <Time.h> #include <DS1307RTC.h> bool skipToday = false; void setup() { Serial.begin(9600); setSyncProvider(RTC.get); // the function to get the time from the RTC if(timeStatus()!= timeSet) Serial.println("Unable to sync with the RTC"); else Serial.println("RTC has set the system time"); digitalWrite(52, HIGH); digitalWrite(50, HIGH); digitalWrite(48, HIGH); digitalWrite(46, HIGH); digitalWrite(44, HIGH); digitalWrite(42, HIGH); digitalWrite(40, HIGH); digitalWrite(38, HIGH); //definition of the relays as outputs pinMode(52, OUTPUT); pinMode(50, OUTPUT); pinMode(48, OUTPUT); pinMode(46, OUTPUT); pinMode(44, OUTPUT); pinMode(42, OUTPUT); pinMode(40, OUTPUT); pinMode(38, OUTPUT); delay(4000); //Check that all relays are inactive at Reset Alarm.alarmRepeat(7,10,0,AlarmAction); // 8:30am every day //Here you can only set the time, this repeats every day. } void loop() { digitalClockDisplay(); Alarm.delay(1000); // wait one second between clock display } void AlarmAction () { if (skipToday) { skipToday = false; //come back tomorrow } else { Serial.println("Turned on potisma"); skipToday = true; //not your day tomorrow } // functions to be called when an alarm triggers: Serial.println("POTISMA"); digitalWrite(52, LOW); //RELAY 1 ON delay(4*60*1000); //wait 4 min digitalWrite(52, HIGH); //RELAY 1 OFF digitalWrite(50, LOW); //RELAY 2 ON delay(4*60*1000); //wait 4 min digitalWrite(50, HIGH); //RELAY 2 OFF digitalWrite(48, LOW); //RELAY 3 ON delay(5*60*1000); //wait 5 min digitalWrite(48, HIGH); //RELAY 3 OFF digitalWrite(46, LOW); //RELAY 4 ON delay(5*60*1000); //wait 5 min digitalWrite(46, HIGH); //RELAY 4 OFF digitalWrite(44, LOW); //RELAY 5 ON delay(5*60*1000); //wait 5 min digitalWrite(44, HIGH); //RELAY 5 OFF digitalWrite(42, LOW); //RELAY 6 ON delay(5*60*1000); //wait 5 min digitalWrite(42, HIGH); //RELAY 6 OFF digitalWrite(40, LOW); //RELAY 7 ON delay(5*60*1000); //wait 5 min digitalWrite(40, HIGH); //RELAY 7 OFF digitalWrite(38, LOW); //RELAY 8 ON delay(5*60*1000); //wait 5 min digitalWrite(38, HIGH); //RELAY 8 OFF } void digitalClockDisplay() { // digital clock display of the time Serial.print(hour()); printDigits(minute()); printDigits(second()); Serial.print("-"); Serial.print(day()); Serial.print("/"); Serial.print(month()); Serial.print("/"); Serial.print(year()); Serial.println(); delay(30000); } void printDigits(int digits) { Serial.print(":"); if(digits < 10) Serial.print('0'); Serial.print(digits); }