nath преди 6 години
родител
ревизия
fa6404b16a
променени са 3 файла, в които са добавени 45 реда и са изтрити 94 реда
  1. 12 82
      lib/DS3231/DS3231.cpp
  2. 3 2
      lib/DS3231/DS3231.h
  3. 30 10
      src/sketch.ino

+ 12 - 82
lib/DS3231/DS3231.cpp

@@ -455,9 +455,6 @@ uint8_t DS3231::_encode(uint8_t value)
 	return encoded;
 }
 
-
-
-
 void DS3231::setAlarm1Time(uint8_t hour, uint8_t min)
 {
 	if (((hour>=0) && (hour<24)) && ((min>=0) && (min<60)))
@@ -467,32 +464,14 @@ void DS3231::setAlarm1Time(uint8_t hour, uint8_t min)
     
     uint8_t sec = 0x00;
     min = min &~ (1<<7);
-    hour = hour &~ (1<<7);;
+    hour = hour &~ (1<<7);
     hour = hour &~ (1<<6);
     uint8_t date = 0x81;
 		_writeRegister(REG_ALARM1_SEC, sec);
 		_writeRegister(REG_ALARM1_MIN, min);
 		_writeRegister(REG_ALARM1_HOUR, hour);
 		_writeRegister(REG_ALARM1_DATE, date);
-	}
-}
-
-
-
-void DS3231::setAlarm2Time(uint8_t hour, uint8_t min)
-{
-	if (((hour>=0) && (hour<24)) && ((min>=0) && (min<60)))
-	{
-    min = _encode(min);
-    hour = _encode(hour);
-    
-    min = min &~ (1<<7);
-    hour = hour &~ 0x3f;
-    uint8_t date = 0x81;
-		_writeRegister(REG_ALARM2_MIN, _encode(min));
-		_writeRegister(REG_ALARM2_HOUR, _encode(hour));
-		_writeRegister(REG_ALARM2_DATE, _encode(date));
-	}
+  }
 }
 
 char *DS3231::getAlarm1Str(uint8_t format)
@@ -540,7 +519,7 @@ char *DS3231::getAlarm1Str(uint8_t format)
 
     sec = _decode(sec);
     min = _decode(min);
-    hour = _decodeH(hour);
+    hour = _decode(hour);
   
     if (hour<10)
         output[0]=48; // "0" en ASCII
@@ -565,63 +544,14 @@ char *DS3231::getAlarm1Str(uint8_t format)
     return (char*)&output;
 }
 
-char *DS3231::getAlarm2Str(uint8_t format)
+void DS3231::setControl()
 {
-    static char output[] = "xx:xx-xxxxx";
-    uint8_t min = _readRegister(REG_ALARM2_MIN);
-    uint8_t hour = _readRegister(REG_ALARM2_HOUR);
-    uint8_t date = _readRegister(REG_ALARM2_DATE);
-  
-    // Formatage des bits de controle
-  
-    if((min&(1<<7)) == 0)
-       output[10] = 48;
-    else
-       output[10] = 49;
-  
-    if((hour&(1<<7)) == 0)
-      output[9] = 48;
-    else
-      output[9] = 49;
-  
-    if((hour&(1<<6)) == 0)
-       output[7] = 50;
-    else
-       output[7] = 49;
-       
-    if((date&(1<<7)) == 0)
-      output[8] = 48;
-    else
-      output[8] = 49;
-  
-    if((date&(1<<6)) == 0)
-       output[6] = 77;
-    else
-       output[6] = 87;
-  
-    //Fin formatage des bits de controle
-  
-  
-
-    min = _decode(min);
-    hour = _decode(hour);
-  
-    if (hour<10)
-        output[0]=48; // "0" en ASCII
-    else
-        output[0]=char((hour / 10)+48);
-  
-  
-        output[1]=char((hour % 10)+48);
- 
-    if (min<10)
-        output[3]=48; // "0" en ASCII
-    else
-        output[3]=char((min / 10)+48);
- 
-    output[4]=char((min % 10)+48);
- 
-    output[11]=0;
-    
-    return (char*)&output;
+  _writeRegister(REG_CON, 0x07);
+  Serial.print("set de la conf");
 }
+
+void DS3231::resetAlarm()
+{
+  _writeRegister(REG_STATUS, 0x00);
+  Serial.print("reset de l'alarme");
+}

+ 3 - 2
lib/DS3231/DS3231.h

@@ -83,10 +83,11 @@ class DS3231
 		void	setTime(uint8_t hour, uint8_t min, uint8_t sec);
 
 		void	setAlarm1Time(uint8_t hour, uint8_t min);
-		void	setAlarm2Time(uint8_t hour, uint8_t min);
 
     char *getAlarm1Str(uint8_t format=FORMAT_LONG);
-    char *getAlarm2Str(uint8_t format=FORMAT_LONG);
+    
+    void  setControl();
+    void  resetAlarm();
 
 		void	setDate(uint8_t date, uint8_t mon, uint16_t year);
 		void	setDOW();

+ 30 - 10
src/sketch.ino

@@ -8,7 +8,7 @@
 #include <DS3231.h>
 #include <string.h>
 
-#include "../lib/calsol.h"
+//#include "../lib/calsol.h"
 
 // Pour steppers
 #define STEP_REV 400
@@ -23,6 +23,8 @@ Stepper myStepper2(stepsPerRevolution, 2, 3, 4, 5);
 // Module DS3231 pour l'heure
 DS3231  rtc(4, 5);
 
+int interruptPin = 2;
+
 struct Date_t {
 	unsigned long annee;
 	unsigned long mois;
@@ -36,20 +38,36 @@ void stepperOff() {
 	}
 }
 
+void Alarme()
+{
+	Serial.print("CA VA PETER !!!!!!");
+}
 
 void setup() {
+	
+	
+	pinMode(interruptPin, INPUT_PULLUP);
+	attachInterrupt(INT0, Alarme, FALLING);
+	
 	Serial.begin(115200);
 	rtc.begin();  
-		rtc.setAlarm1Time(8, 20);
-		rtc.setAlarm2Time(14, 45);
+	Time t;
+	t = rtc.getTime();
+	rtc.setAlarm1Time(t.hour, (t.min + 1));
+	rtc.setControl();
+	rtc.resetAlarm();
 	// The following lines can be uncommented to set the date and time
 
-	/*  rtc.setDOW(THURSDAY);     // Set Day-of-Week to SUNDAY
-	  rtc.setTime(22, 14, 0);     // Set the time to 12:00:00 (24hr format)
-	  rtc.setDate(4, 11, 2019);   // Set the date to January 1st, 2014 */
+	/* rtc.setDOW(THURSDAY);     // Set Day-of-Week to SUNDAY
+	  rtc.setTime(20, 18, 0);     // Set the time to 12:00:00 (24hr format)
+	  rtc.setDate(17, 4, 2019);   // Set the date to January 1st, 2014 */
 
 }
 
+unsigned long getDelay() {
+	
+}
+
 void loop() {
 	/*myStepper2.setSpeed(100);
 	for(int i=0; i<=STEP_REV*REV; i++) {
@@ -63,6 +81,9 @@ void loop() {
 	stepperOff();
 	delay(3000);*/
 
+
+		
+
 	// Send Day-of-Week
 	Serial.print(rtc.getDOWStr());
 	Serial.print(" ");
@@ -77,10 +98,9 @@ void loop() {
 	
 	Serial.print("Alarm 1 : ");
 	Serial.println(rtc.getAlarm1Str());
-	Serial.println("-----------------------------------------------");
-	Serial.print("Alarm 2 : ");
-	Serial.println(rtc.getAlarm2Str());	
+	
 	
 	// Wait one second before repeating :)
 	delay (1000);
-}
+
+}