|
@@ -9,6 +9,7 @@
|
|
|
#include "../lib/calsol.h"
|
|
|
|
|
|
uint8_t SHIFT_NIGHT=45;
|
|
|
+uint8_t SHIFT_DAY=30;
|
|
|
|
|
|
// Module DS3231 pour l'heure
|
|
|
int gnd_rtc = 14;
|
|
@@ -34,6 +35,50 @@ struct Date_t {
|
|
|
};
|
|
|
|
|
|
|
|
|
+
|
|
|
+void setdate() {
|
|
|
+ Serial.println("Set Date format : 05/06/19 for example");
|
|
|
+ char buffer[] = {' ',' ',' ',' ',' ',' ',' ', ' '};
|
|
|
+ while (!Serial.available()); // Wait for characters
|
|
|
+ Serial.readBytesUntil('\n', buffer, 8);
|
|
|
+
|
|
|
+ int incomingValue = atoi(buffer);
|
|
|
+ Serial.println(incomingValue);
|
|
|
+
|
|
|
+ rtc.setDate(atoi(buffer[0])*10+atoi(buffer[1]),
|
|
|
+ atoi(buffer[3])*10+atoi(buffer[4]),
|
|
|
+ atoi(buffer[6])*10+atoi(buffer[7]) ); // Set the date to January 1st, 2014
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void settime() {
|
|
|
+ Serial.println("Set time format : 01:34 for example");
|
|
|
+ char buffer[] = {' ',' ',' ',' ',' '};
|
|
|
+ while (!Serial.available()); // Wait for characters
|
|
|
+ Serial.readBytesUntil('\n', buffer, 5);
|
|
|
+
|
|
|
+ int incomingValue = atoi(buffer);
|
|
|
+ Serial.println(incomingValue);
|
|
|
+
|
|
|
+ rtc.setTime(atoi(buffer[0])*10+buffer[1],
|
|
|
+ atoi(buffer[3])*10+atoi(buffer[4]),
|
|
|
+ 00);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+void setRTC() {
|
|
|
+ rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY
|
|
|
+ rtc.setTime(25, 21, 00); // Set the time to 12:00:00 (24hr format)
|
|
|
+ rtc.setDate(25, 6, 2019); // Set the date to January 1st, 2014
|
|
|
+}
|
|
|
+*/
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
/*
|
|
|
* Variable globales pour interruptions
|
|
|
*/
|
|
@@ -108,6 +153,8 @@ void selftest_func(void) {
|
|
|
Serial.println("3. Read fin_course_ouverture");
|
|
|
Serial.println("4. Detect position and switch position");
|
|
|
Serial.println("5. Reset Arduino");
|
|
|
+ Serial.println("6. Set Date");
|
|
|
+ Serial.println("7. Set time");
|
|
|
Serial.println("o. open door");
|
|
|
Serial.println("c. close door");
|
|
|
Serial.println("+. open door for 100ms");
|
|
@@ -174,6 +221,12 @@ void selftest_func(void) {
|
|
|
case '5':
|
|
|
asm volatile (" jmp 0");
|
|
|
|
|
|
+ case '6':
|
|
|
+ setdate();
|
|
|
+
|
|
|
+ case '7':
|
|
|
+ settime();
|
|
|
+
|
|
|
case 'o':
|
|
|
ouvrirPorte(1);
|
|
|
|
|
@@ -225,6 +278,9 @@ void selftest_func(void) {
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
void setup() {
|
|
|
// On dit que c'est des sorties
|
|
|
pinMode(motor_power, OUTPUT);
|
|
@@ -266,12 +322,6 @@ void setup() {
|
|
|
//setRTC();
|
|
|
}
|
|
|
|
|
|
-void setRTC() {
|
|
|
- rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY
|
|
|
- rtc.setTime(21, 21, 00); // Set the time to 12:00:00 (24hr format)
|
|
|
- rtc.setDate(15, 5, 2019); // Set the date to January 1st, 2014
|
|
|
-}
|
|
|
-
|
|
|
void loop() {
|
|
|
|
|
|
bool read;
|
|
@@ -322,8 +372,8 @@ void loop() {
|
|
|
if (t.date == DateSol_t[i][2]) {
|
|
|
|
|
|
timestamp_time = ((float)i * 24 * 60) + ((float)t.hour * 60) + (float)t.min;
|
|
|
- timestamp_cal_matin = ((float)i * 24 * 60) + ((float)DateSol_t[i][3] * 60) + (float)DateSol_t[i][4];
|
|
|
- timestamp_cal_soir = ((float)i * 24 * 60) + ((float)DateSol_t[i][5] * 60) + (float)DateSol_t[i][6];
|
|
|
+ timestamp_cal_matin = ((float)i * 24 * 60) + ((float)DateSol_t[i][3] * 60) + (float)DateSol_t[i][4] - SHIFT_DAY;
|
|
|
+ timestamp_cal_soir = ((float)i * 24 * 60) + ((float)DateSol_t[i][5] * 60) + (float)DateSol_t[i][6] - SHIFT_NIGHT;
|
|
|
timestamp_minuit = ((float)i * 24 * 60);
|
|
|
timestamp_2359 = ((float)i * 24 * 60) + (24 * 60) -1;
|
|
|
|
|
@@ -347,12 +397,21 @@ void loop() {
|
|
|
// Cas1
|
|
|
Serial.println("=> Day is comming... CAS1");
|
|
|
Serial.print("=> Setting Alarm1 registers @ ");
|
|
|
- Serial.print( DateSol_t[i][3] );
|
|
|
- Serial.print(" : ");
|
|
|
- Serial.println( DateSol_t[i][4] );
|
|
|
|
|
|
- rtc.setAlarm1Time(DateSol_t[i][3], DateSol_t[i][4]);
|
|
|
- //rtc.setAlarm1Time(t.hour, t.min+1);
|
|
|
+ //car shift, on soustrait le shift au timestamp_cal_matin
|
|
|
+ if (DateSol_t[i][4]-SHIFT_DAY < 0) {
|
|
|
+ Serial.print( DateSol_t[i][3] - 1 );
|
|
|
+ Serial.print(" : ");
|
|
|
+ Serial.println( (DateSol_t[i][4]-SHIFT_DAY)+60 );
|
|
|
+ rtc.setAlarm1Time( DateSol_t[i][3]-1, (DateSol_t[i][4]-SHIFT_DAY)+60 );
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Serial.print( DateSol_t[i][3] );
|
|
|
+ Serial.print(" : ");
|
|
|
+ Serial.println( DateSol_t[i][4] - SHIFT_DAY);
|
|
|
+ rtc.setAlarm1Time(DateSol_t[i][3], DateSol_t[i][4]-SHIFT_DAY);
|
|
|
+ //rtc.setAlarm1Time(t.hour, t.min+1);
|
|
|
+ }
|
|
|
|
|
|
rtc.setControl();
|
|
|
rtc.resetAlarm();
|
|
@@ -366,6 +425,7 @@ void loop() {
|
|
|
attachInterrupt(INT5, ouvrir, FALLING);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
// Cas2
|
|
|
else if ( (timestamp_time > timestamp_cal_matin) && (timestamp_time < timestamp_cal_soir) ) {
|
|
|
Serial.println("=> Night is comming, CAS2");
|
|
@@ -376,7 +436,7 @@ void loop() {
|
|
|
if (DateSol_t[i][6]+SHIFT_NIGHT >= 60) {
|
|
|
Serial.print( DateSol_t[i][5] + 1 );
|
|
|
Serial.print(" : ");
|
|
|
- Serial.println( DateSol_t[i][5]+1, (DateSol_t[i][6]+SHIFT_NIGHT)-60 );
|
|
|
+ Serial.println( (DateSol_t[i][6]+SHIFT_NIGHT)-60 );
|
|
|
rtc.setAlarm1Time(DateSol_t[i][5]+1, (DateSol_t[i][6]+SHIFT_NIGHT)-60);
|
|
|
}
|
|
|
else {
|
|
@@ -402,12 +462,22 @@ void loop() {
|
|
|
else if ( (timestamp_time > timestamp_cal_soir) && (timestamp_time < timestamp_2359) ) {
|
|
|
Serial.println("=> Day is comming tomorrow, CAS3");
|
|
|
Serial.print("=> Setting Alarm1 registers @ ");
|
|
|
- Serial.print( DateSol_t[i+1][3] );
|
|
|
- Serial.print(" : ");
|
|
|
- Serial.println( DateSol_t[i+1][4] );
|
|
|
|
|
|
- rtc.setAlarm1Time(DateSol_t[i+1][3], DateSol_t[i+1][4]);
|
|
|
- //rtc.setAlarm1Time(t.hour, t.min+1);
|
|
|
+ //car shift, on soustrait le shift au timestamp_cal_matin
|
|
|
+ if (DateSol_t[i][4]-SHIFT_DAY < 0) {
|
|
|
+ Serial.print( DateSol_t[i][3] - 1 );
|
|
|
+ Serial.print(" : ");
|
|
|
+ Serial.println( (DateSol_t[i][4]-SHIFT_DAY)+60 );
|
|
|
+ rtc.setAlarm1Time( DateSol_t[i][3]-1, (DateSol_t[i][4]-SHIFT_DAY)+60 );
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Serial.print( DateSol_t[i][3] );
|
|
|
+ Serial.print(" : ");
|
|
|
+ Serial.println( DateSol_t[i][4] - SHIFT_DAY);
|
|
|
+ rtc.setAlarm1Time(DateSol_t[i][3], DateSol_t[i][4]-SHIFT_DAY);
|
|
|
+ //rtc.setAlarm1Time(t.hour, t.min+1);
|
|
|
+ }
|
|
|
+
|
|
|
rtc.setControl();
|
|
|
rtc.resetAlarm();
|
|
|
|