Files
Arduino/libraries/Ds1302/examples/02/SetDateTime.cpp
Jérôme Delacotte 7b30d6e298 first commit
2025-03-06 11:15:32 +01:00

68 lines
1.3 KiB
C++

/** SetDateTime.cpp
*
* Example of setting the date and time to the RTC.
*
* @version 1.0.1
* @author Rafa Couto <caligari@treboada.net>
* @license GNU Affero General Public License v3.0
* @see https://github.com/Treboada/Ds1302
*
*/
#include <Arduino.h>
#include <Ds1302.h>
// DS1302 RTC instance
Ds1302 rtc(PIN_ENA, PIN_CLK, PIN_DAT);
uint8_t parseDigits(char* str, uint8_t count)
{
uint8_t val = 0;
while(count-- > 0) val = (val * 10) + (*str++ - '0');
return val;
}
void setup()
{
// initialize the RTC
rtc.init();
Serial.begin(9600);
Serial.println("Input the date and time (YYMMDDWhhmmss): ");
}
void loop()
{
static char buffer[13];
static uint8_t char_idx = 0;
if (char_idx == 13)
{
// structure to manage date-time
Ds1302::DateTime dt;
dt.year = parseDigits(buffer, 2);
dt.month = parseDigits(buffer + 2, 2);
dt.day = parseDigits(buffer + 4, 2);
dt.dow = parseDigits(buffer + 6, 1);
dt.hour = parseDigits(buffer + 7, 2);
dt.minute = parseDigits(buffer + 9, 2);
dt.second = parseDigits(buffer + 11, 2);
// set the date and time
rtc.setDateTime(&dt);
char_idx = 0;
}
if (Serial.available())
{
buffer[char_idx++] = Serial.read();
}
}