First Commit
This commit is contained in:
113
libraries/DS3231/examples/DS3231_set/DS3231_set.ino
Normal file
113
libraries/DS3231/examples/DS3231_set/DS3231_set.ino
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
DS3231_set.pde
|
||||
Eric Ayars
|
||||
4/11
|
||||
|
||||
Test of set-time routines for a DS3231 RTC
|
||||
|
||||
*/
|
||||
|
||||
#include <DS3231.h>
|
||||
#include <Wire.h>
|
||||
|
||||
DS3231 myRTC;
|
||||
|
||||
byte year;
|
||||
byte month;
|
||||
byte date;
|
||||
byte dOW;
|
||||
byte hour;
|
||||
byte minute;
|
||||
byte second;
|
||||
|
||||
void getDateStuff(byte& year, byte& month, byte& date, byte& dOW,
|
||||
byte& hour, byte& minute, byte& second) {
|
||||
// Call this if you notice something coming in on
|
||||
// the serial port. The stuff coming in should be in
|
||||
// the order YYMMDDwHHMMSS, with an 'x' at the end.
|
||||
boolean gotString = false;
|
||||
char inChar;
|
||||
byte temp1, temp2;
|
||||
char inString[20];
|
||||
|
||||
byte j=0;
|
||||
while (!gotString) {
|
||||
if (Serial.available()) {
|
||||
inChar = Serial.read();
|
||||
inString[j] = inChar;
|
||||
j += 1;
|
||||
if (inChar == 'x') {
|
||||
gotString = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Serial.println(inString);
|
||||
// Read year first
|
||||
temp1 = (byte)inString[0] -48;
|
||||
temp2 = (byte)inString[1] -48;
|
||||
year = temp1*10 + temp2;
|
||||
// now month
|
||||
temp1 = (byte)inString[2] -48;
|
||||
temp2 = (byte)inString[3] -48;
|
||||
month = temp1*10 + temp2;
|
||||
// now date
|
||||
temp1 = (byte)inString[4] -48;
|
||||
temp2 = (byte)inString[5] -48;
|
||||
date = temp1*10 + temp2;
|
||||
// now Day of Week
|
||||
dOW = (byte)inString[6] - 48;
|
||||
// now hour
|
||||
temp1 = (byte)inString[7] -48;
|
||||
temp2 = (byte)inString[8] -48;
|
||||
hour = temp1*10 + temp2;
|
||||
// now minute
|
||||
temp1 = (byte)inString[9] -48;
|
||||
temp2 = (byte)inString[10] -48;
|
||||
minute = temp1*10 + temp2;
|
||||
// now second
|
||||
temp1 = (byte)inString[11] -48;
|
||||
temp2 = (byte)inString[12] -48;
|
||||
second = temp1*10 + temp2;
|
||||
}
|
||||
|
||||
void setup() {
|
||||
// Start the serial port
|
||||
Serial.begin(57600);
|
||||
|
||||
// Start the I2C interface
|
||||
Wire.begin();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
// If something is coming in on the serial line, it's
|
||||
// a time correction so set the clock accordingly.
|
||||
if (Serial.available()) {
|
||||
getDateStuff(year, month, date, dOW, hour, minute, second);
|
||||
|
||||
myRTC.setClockMode(false); // set to 24h
|
||||
//setClockMode(true); // set to 12h
|
||||
|
||||
myRTC.setYear(year);
|
||||
myRTC.setMonth(month);
|
||||
myRTC.setDate(date);
|
||||
myRTC.setDoW(dOW);
|
||||
myRTC.setHour(hour);
|
||||
myRTC.setMinute(minute);
|
||||
myRTC.setSecond(second);
|
||||
|
||||
// Test of alarm functions
|
||||
// set A1 to one minute past the time we just set the clock
|
||||
// on current day of week.
|
||||
myRTC.setA1Time(dOW, hour, minute+1, second, 0x0, true,
|
||||
false, false);
|
||||
// set A2 to two minutes past, on current day of month.
|
||||
myRTC.setA2Time(date, hour, minute+2, 0x0, false, false,
|
||||
false);
|
||||
// Turn on both alarms, with external interrupt
|
||||
myRTC.turnOnAlarm(1);
|
||||
myRTC.turnOnAlarm(2);
|
||||
|
||||
}
|
||||
delay(1000);
|
||||
}
|
||||
Reference in New Issue
Block a user