summaryrefslogtreecommitdiff
path: root/Time/Examples
diff options
context:
space:
mode:
Diffstat (limited to 'Time/Examples')
-rw-r--r--Time/Examples/Processing/SyncArduinoClock/SyncArduinoClock.pde70
-rw-r--r--Time/Examples/Processing/SyncArduinoClock/readme.txt9
-rw-r--r--Time/Examples/TimeGPS/TimeGPS.pde82
-rw-r--r--Time/Examples/TimeNTP/TimeNTP.pde120
-rw-r--r--Time/Examples/TimeRTC/TimeRTC.pde47
-rw-r--r--Time/Examples/TimeRTCLog/TimeRTCLog.pde106
-rw-r--r--Time/Examples/TimeRTCSet/TimeRTCSet.pde82
-rw-r--r--Time/Examples/TimeSerial/TimeSerial.pde82
-rw-r--r--Time/Examples/TimeSerialDateStrings/TimeSerialDateStrings.pde80
9 files changed, 678 insertions, 0 deletions
diff --git a/Time/Examples/Processing/SyncArduinoClock/SyncArduinoClock.pde b/Time/Examples/Processing/SyncArduinoClock/SyncArduinoClock.pde
new file mode 100644
index 0000000..4c74d4b
--- /dev/null
+++ b/Time/Examples/Processing/SyncArduinoClock/SyncArduinoClock.pde
@@ -0,0 +1,70 @@
+/**
+ * SyncArduinoClock.
+ *
+ * portIndex must be set to the port connected to the Arduino
+ *
+ * The current time is sent in response to request message from Arduino
+ * or by clicking the display window
+ *
+ * The time message is 11 ASCII text characters; a header (the letter 'T')
+ * followed by the ten digit system time (unix time)
+ */
+
+
+import processing.serial.*;
+
+public static final short portIndex = 1; // select the com port, 0 is the first port
+public static final char TIME_HEADER = 'T'; //header byte for arduino serial time message
+public static final char TIME_REQUEST = 7; // ASCII bell character
+public static final char LF = 10; // ASCII linefeed
+public static final char CR = 13; // ASCII linefeed
+Serial myPort; // Create object from Serial class
+
+void setup() {
+ size(200, 200);
+ println(Serial.list());
+ println(" Connecting to -> " + Serial.list()[portIndex]);
+ myPort = new Serial(this,Serial.list()[portIndex], 9600);
+}
+
+void draw()
+{
+ if ( myPort.available() > 0) { // If data is available,
+ char val = char(myPort.read()); // read it and store it in val
+ if(val == TIME_REQUEST){
+ long t = getTimeNow();
+ sendTimeMessage(TIME_HEADER, t);
+ }
+ else
+ {
+ if(val == LF)
+ ; //igonore
+ else if(val == CR)
+ println();
+ else
+ print(val); // echo everying but time request
+ }
+ }
+}
+
+void mousePressed() {
+ sendTimeMessage( TIME_HEADER, getTimeNow());
+}
+
+
+void sendTimeMessage(char header, long time) {
+ String timeStr = String.valueOf(time);
+ myPort.write(header); // send header and time to arduino
+ myPort.write(timeStr);
+}
+
+long getTimeNow(){
+ // java time is in ms, we want secs
+ GregorianCalendar cal = new GregorianCalendar();
+ cal.setTime(new Date());
+ int tzo = cal.get(Calendar.ZONE_OFFSET);
+ int dst = cal.get(Calendar.DST_OFFSET);
+ long now = (cal.getTimeInMillis() / 1000) ;
+ now = now + (tzo/1000) + (dst/1000);
+ return now;
+}
diff --git a/Time/Examples/Processing/SyncArduinoClock/readme.txt b/Time/Examples/Processing/SyncArduinoClock/readme.txt
new file mode 100644
index 0000000..985bd80
--- /dev/null
+++ b/Time/Examples/Processing/SyncArduinoClock/readme.txt
@@ -0,0 +1,9 @@
+SyncArduinoClock is a Processing sketch that responds to Arduino requests for
+time synchronization messages.
+
+The portIndex must be set the Serial port connected to Arduino.
+
+Download TimeSerial.pde onto Arduino and you should see the time
+message displayed when you run SyncArduinoClock in Processing.
+The Arduino time is set from the time on your computer through the
+Processing sketch. \ No newline at end of file
diff --git a/Time/Examples/TimeGPS/TimeGPS.pde b/Time/Examples/TimeGPS/TimeGPS.pde
new file mode 100644
index 0000000..1c7b25e
--- /dev/null
+++ b/Time/Examples/TimeGPS/TimeGPS.pde
@@ -0,0 +1,82 @@
+/*
+ * TimeGPS.pde
+ * example code illustrating time synced from a GPS
+ *
+ */
+
+#include <Time.h>
+#include <TinyGPS.h> //http://arduiniana.org/libraries/TinyGPS/
+#include <NewSoftSerial.h> //http://arduiniana.org/libraries/newsoftserial/
+// GPS and NewSoftSerial libraries are the work of Mikal Hart
+
+TinyGPS gps;
+NewSoftSerial serial_gps = NewSoftSerial(3, 2); // receive on pin 3
+
+const int offset = 1; // offset hours from gps time (UTC)
+time_t prevDisplay = 0; // when the digital clock was displayed
+
+void setup()
+{
+ Serial.begin(9600);
+ serial_gps.begin(4800);
+ Serial.println("Waiting for GPS time ... ");
+ setSyncProvider(gpsTimeSync);
+}
+
+void loop()
+{
+ while (serial_gps.available())
+ {
+ gps.encode(serial_gps.read()); // process gps messages
+ }
+ if(timeStatus()!= timeNotSet)
+ {
+ if( now() != prevDisplay) //update the display only if the time has changed
+ {
+ prevDisplay = now();
+ digitalClockDisplay();
+ }
+ }
+}
+
+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);
+}
+
+time_t gpsTimeSync(){
+ // returns time if avail from gps, else returns 0
+ unsigned long fix_age = 0 ;
+ gps.get_datetime(NULL,NULL, &fix_age);
+ unsigned long time_since_last_fix;
+ if(fix_age < 1000)
+ return gpsTimeToArduinoTime(); // return time only if updated recently by gps
+ return 0;
+}
+
+time_t gpsTimeToArduinoTime(){
+ // returns time_t from gps date and time with the given offset hours
+ tmElements_t tm;
+ int year;
+ gps.crack_datetime(&year, &tm.Month, &tm.Day, &tm.Hour, &tm.Minute, &tm.Second, NULL, NULL);
+ tm.Year = year - 1970;
+ time_t time = makeTime(tm);
+ return time + (offset * SECS_PER_HOUR);
+}
diff --git a/Time/Examples/TimeNTP/TimeNTP.pde b/Time/Examples/TimeNTP/TimeNTP.pde
new file mode 100644
index 0000000..11927c6
--- /dev/null
+++ b/Time/Examples/TimeNTP/TimeNTP.pde
@@ -0,0 +1,120 @@
+/*
+ * Time_NTP.pde
+ * Example showing time sync to NTP time source
+ *
+ * This sketch uses the Ethenet library with the user contributed UdpBytewise extension
+ */
+
+#include <Time.h>
+#include <Ethernet.h>
+#include <UdpBytewise.h> // UDP library from: bjoern@cs.stanford.edu 12/30/2008
+#if UDP_TX_PACKET_MAX_SIZE <64 || UDP_RX_PACKET_MAX_SIZE < 64
+#error : UDP packet size to small - modify UdpBytewise.h to set buffers to 64 bytes
+#endif
+/*
+ *
+ * You may need to modify the UdpBytewise.h library to allow enough space in the buffers for the NTP packets.
+ * Open up UdpBytewse.h and set the following buffers to 64 bytes:
+ * #define UDP_TX_PACKET_MAX_SIZE 64
+ * #define UDP_RX_PACKET_MAX_SIZE 64
+ */
+
+
+byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
+byte ip[] = { 192, 168, 1, 44 }; // set the IP address to an unused address on your network
+
+byte SNTP_server_IP[] = { 192, 43, 244, 18}; // time.nist.gov
+//byte SNTP_server_IP[] = { 130,149,17,21}; // ntps1-0.cs.tu-berlin.de
+//byte SNTP_server_IP[] = { 192,53,103,108}; // ptbtime1.ptb.de
+
+
+time_t prevDisplay = 0; // when the digital clock was displayed
+const long timeZoneOffset = 0L; // set this to the offset in seconds to your local time;
+
+void setup()
+{
+ Serial.begin(9600);
+ Ethernet.begin(mac,ip);
+ Serial.println("waiting for sync");
+ setSyncProvider(getNtpTime);
+ while(timeStatus()== timeNotSet)
+ ; // wait until the time is set by the sync provider
+}
+
+void loop()
+{
+ if( now() != prevDisplay) //update the display only if the time has changed
+ {
+ prevDisplay = now();
+ digitalClockDisplay();
+ }
+}
+
+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);
+}
+
+/*-------- NTP code ----------*/
+
+unsigned long getNtpTime()
+{
+ sendNTPpacket(SNTP_server_IP);
+ delay(1000);
+ if ( UdpBytewise.available() ) {
+ for(int i=0; i < 40; i++)
+ UdpBytewise.read(); // ignore every field except the time
+ const unsigned long seventy_years = 2208988800UL + timeZoneOffset;
+ return getUlong() - seventy_years;
+ }
+ return 0; // return 0 if unable to get the time
+}
+
+unsigned long sendNTPpacket(byte *address)
+{
+ UdpBytewise.begin(123);
+ UdpBytewise.beginPacket(address, 123);
+ UdpBytewise.write(B11100011); // LI, Version, Mode
+ UdpBytewise.write(0); // Stratum
+ UdpBytewise.write(6); // Polling Interval
+ UdpBytewise.write(0xEC); // Peer Clock Precision
+ write_n(0, 8); // Root Delay & Root Dispersion
+ UdpBytewise.write(49);
+ UdpBytewise.write(0x4E);
+ UdpBytewise.write(49);
+ UdpBytewise.write(52);
+ write_n(0, 32); //Reference and time stamps
+ UdpBytewise.endPacket();
+}
+
+unsigned long getUlong()
+{
+ unsigned long ulong = (unsigned long)UdpBytewise.read() << 24;
+ ulong |= (unsigned long)UdpBytewise.read() << 16;
+ ulong |= (unsigned long)UdpBytewise.read() << 8;
+ ulong |= (unsigned long)UdpBytewise.read();
+ return ulong;
+}
+
+void write_n(int what, int how_many)
+{
+ for( int i = 0; i < how_many; i++ )
+ UdpBytewise.write(what);
+}
diff --git a/Time/Examples/TimeRTC/TimeRTC.pde b/Time/Examples/TimeRTC/TimeRTC.pde
new file mode 100644
index 0000000..1a1ed80
--- /dev/null
+++ b/Time/Examples/TimeRTC/TimeRTC.pde
@@ -0,0 +1,47 @@
+/*
+ * TimeRTC.pde
+ * example code illustrating Time library with Real Time Clock.
+ *
+ */
+
+#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()
+{
+ 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);
+}
+
diff --git a/Time/Examples/TimeRTCLog/TimeRTCLog.pde b/Time/Examples/TimeRTCLog/TimeRTCLog.pde
new file mode 100644
index 0000000..76ed17d
--- /dev/null
+++ b/Time/Examples/TimeRTCLog/TimeRTCLog.pde
@@ -0,0 +1,106 @@
+/*
+ * TimeRTCLogger.pde
+ * example code illustrating adding and subtracting Time.
+ *
+ * this sketch logs pin state change events
+ * the time of the event and time since the previous event is calculated and sent to the serial port.
+ */
+
+#include <Time.h>
+#include <Wire.h>
+#include <DS1307RTC.h> // a basic DS1307 library that returns time as a time_t
+
+const int nbrInputPins = 6; // monitor 6 digital pins
+const int inputPins[nbrInputPins] = {2,3,4,5,6,7}; // pins to monitor
+boolean state[nbrInputPins] ; // the state of the monitored pins
+time_t prevEventTime[nbrInputPins] ; // the time of the previous event
+
+void setup() {
+ Serial.begin(9600);
+ setSyncProvider(RTC.get); // the function to sync the time from the RTC
+ for(int i=0; i < nbrInputPins; i++){
+ pinMode( inputPins[i], INPUT);
+ // digitalWrite( inputPins[i], HIGH); // uncomment these lines if
+ // state[i] = HIGH; // pull-up resistors are wanted
+ }
+}
+
+void loop()
+{
+ for(int i=0; i < nbrInputPins; i++)
+ {
+ boolean val = digitalRead(inputPins[i]);
+ if(val != state[i])
+ {
+ time_t duration = 0; // the time since the previous event
+ state[i] = val;
+ time_t timeNow = now();
+ if(prevEventTime[i] > 0)
+ // if this was not the first state change, calculate the time from the previous change
+ duration = duration = timeNow - prevEventTime[i];
+ logEvent(inputPins[i], val, timeNow, duration ); // log the event
+ prevEventTime[i] = timeNow; // store the time for this event
+ }
+ }
+}
+
+void logEvent( int pin, boolean state, time_t timeNow, time_t duration)
+{
+ Serial.print("Pin ");
+ Serial.print(pin);
+ if( state == HIGH)
+ Serial.print(" went High at ");
+ else
+ Serial.print(" went Low at ");
+ showTime(timeNow);
+ if(duration > 0){
+ // only display duration if greater than 0
+ Serial.print(", Duration was ");
+ showDuration(duration);
+ }
+ Serial.println();
+}
+
+
+void showTime(time_t t){
+ // display the given time
+ Serial.print(hour(t));
+ printDigits(minute(t));
+ printDigits(second(t));
+ Serial.print(" ");
+ Serial.print(day(t));
+ Serial.print(" ");
+ Serial.print(month(t));
+ Serial.print(" ");
+ Serial.print(year(t));
+}
+
+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);
+}
+
+void showDuration(time_t duration){
+// prints the duration in days, hours, minutes and seconds
+ if(duration >= SECS_PER_DAY){
+ Serial.print(duration / SECS_PER_DAY);
+ Serial.print(" day(s) ");
+ duration = duration % SECS_PER_DAY;
+ }
+ if(duration >= SECS_PER_HOUR){
+ Serial.print(duration / SECS_PER_HOUR);
+ Serial.print(" hour(s) ");
+ duration = duration % SECS_PER_HOUR;
+ }
+ if(duration >= SECS_PER_MIN){
+ Serial.print(duration / SECS_PER_MIN);
+ Serial.print(" minute(s) ");
+ duration = duration % SECS_PER_MIN;
+ }
+ Serial.print(duration);
+ Serial.print(" second(s) ");
+}
+
diff --git a/Time/Examples/TimeRTCSet/TimeRTCSet.pde b/Time/Examples/TimeRTCSet/TimeRTCSet.pde
new file mode 100644
index 0000000..48b696c
--- /dev/null
+++ b/Time/Examples/TimeRTCSet/TimeRTCSet.pde
@@ -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;
+}
+
diff --git a/Time/Examples/TimeSerial/TimeSerial.pde b/Time/Examples/TimeSerial/TimeSerial.pde
new file mode 100644
index 0000000..55c67a6
--- /dev/null
+++ b/Time/Examples/TimeSerial/TimeSerial.pde
@@ -0,0 +1,82 @@
+/*
+ * TimeSerial.pde
+ * example code illustrating Time library set through serial port messages.
+ *
+ * Messages consist of the letter T followed by ten digit time (as seconds since Jan 1 1970)
+ * you can send the text on the next line using Serial Monitor to set the clock to noon Jan 1 2010
+ T1262347200
+ *
+ * A Processing example sketch to automatically send the messages is inclided in the download
+ */
+
+#include <Time.h>
+
+#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
+#define TIME_REQUEST 7 // ASCII bell character requests a time sync message
+
+void setup() {
+ Serial.begin(9600);
+ setSyncProvider( requestSync); //set function to call when sync required
+ Serial.println("Waiting for sync message");
+}
+
+void loop(){
+ if(Serial.available() )
+ {
+ processSyncMessage();
+ }
+ if(timeStatus()!= timeNotSet)
+ {
+ digitalWrite(13,timeStatus() == timeSet); // on if synced, off if needs refresh
+ 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);
+}
+
+void processSyncMessage() {
+ // if time sync available from serial port, update time and return true
+ 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
+ }
+ }
+ setTime(pctime); // Sync Arduino clock to the time received on the serial port
+ }
+ }
+}
+
+time_t requestSync()
+{
+ Serial.print(TIME_REQUEST,BYTE);
+ return 0; // the time will be sent later in response to serial mesg
+}
+
diff --git a/Time/Examples/TimeSerialDateStrings/TimeSerialDateStrings.pde b/Time/Examples/TimeSerialDateStrings/TimeSerialDateStrings.pde
new file mode 100644
index 0000000..dcff97e
--- /dev/null
+++ b/Time/Examples/TimeSerialDateStrings/TimeSerialDateStrings.pde
@@ -0,0 +1,80 @@
+/*
+ * TimeSerialDateStrings.pde
+ * example code illustrating Time library date strings
+ *
+ * This sketch adds date string functionality to TimeSerial.pde
+ *
+ */
+
+#include <Time.h>
+
+#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
+#define TIME_REQUEST 7 // ASCII bell character requests a time sync message
+
+void setup() {
+ Serial.begin(9600);
+ setSyncProvider( requestSync); //set function to call when sync required
+ Serial.println("Waiting for sync message");
+}
+
+void loop(){
+ if(Serial.available() )
+ {
+ processSyncMessage();
+ }
+ if(timeStatus()!= timeNotSet)
+ {
+ digitalClockDisplay();
+ }
+ delay(1000);
+}
+
+void digitalClockDisplay(){
+ // digital clock display of the time
+ Serial.print(hour());
+ printDigits(minute());
+ printDigits(second());
+ Serial.print(" ");
+ Serial.print(dayStr(weekday()));
+ Serial.print(" ");
+ Serial.print(day());
+ Serial.print(" ");
+ Serial.print(monthShortStr(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);
+}
+
+void processSyncMessage() {
+ // if time sync available from serial port, update time and return true
+ 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
+ }
+ }
+ setTime(pctime); // Sync Arduino clock to the time received on the serial port
+ }
+ }
+}
+
+time_t requestSync()
+{
+ Serial.print(TIME_REQUEST,BYTE);
+ return 0; // the time will be sent later in response to serial mesg
+}
+