mirror of
https://github.com/KevinMidboe/Arduino.git
synced 2026-04-26 00:34:09 +00:00
Init commit with many years of arduino sketches and projects. I dont know if the esp8266 includes much, but there are also libraries. I hope they dont have crazy automatic versioning through the Arduino IDE.
This commit is contained in:
82
Projects/libraries/Installed_libs/Time/Examples/TimeRTCSet/TimeRTCSet.pde
Executable file
82
Projects/libraries/Installed_libs/Time/Examples/TimeRTCSet/TimeRTCSet.pde
Executable file
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
* TimeRTCSet.pde
|
||||
* example code illustrating Time library with Real Time Clock.
|
||||
*
|
||||
* RTC clock is set in response to serial port time message
|
||||
* A Processing example sketch to set the time is inclided in the download
|
||||
*/
|
||||
|
||||
#include <Time.h>
|
||||
#include <Wire.h>
|
||||
#include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t
|
||||
|
||||
|
||||
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");
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
if(Serial.available())
|
||||
{
|
||||
time_t t = processSyncMessage();
|
||||
if(t >0)
|
||||
{
|
||||
RTC.set(t); // set the RTC and the system time to the received value
|
||||
setTime(t);
|
||||
}
|
||||
}
|
||||
digitalClockDisplay();
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
void printDigits(int digits){
|
||||
// utility function for digital clock display: prints preceding colon and leading 0
|
||||
Serial.print(":");
|
||||
if(digits < 10)
|
||||
Serial.print('0');
|
||||
Serial.print(digits);
|
||||
}
|
||||
|
||||
/* code to process time sync messages from the serial port */
|
||||
#define TIME_MSG_LEN 11 // time sync to PC is HEADER followed by unix time_t as ten ascii digits
|
||||
#define TIME_HEADER 'T' // Header tag for serial time sync message
|
||||
|
||||
time_t processSyncMessage() {
|
||||
// return the time if a valid sync message is received on the serial port.
|
||||
while(Serial.available() >= TIME_MSG_LEN ){ // time message consists of a header and ten ascii digits
|
||||
char c = Serial.read() ;
|
||||
Serial.print(c);
|
||||
if( c == TIME_HEADER ) {
|
||||
time_t pctime = 0;
|
||||
for(int i=0; i < TIME_MSG_LEN -1; i++){
|
||||
c = Serial.read();
|
||||
if( c >= '0' && c <= '9'){
|
||||
pctime = (10 * pctime) + (c - '0') ; // convert digits to a number
|
||||
}
|
||||
}
|
||||
return pctime;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user