Arduino: DateTime
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Library
Download dari
http://playground.arduino.cc/Code/Time http://playground.arduino.cc/uploads/Code/DateTime.zip
Tambahkan ke
cd /usr/share/arduino/libraries wget http://playground.arduino.cc/uploads/Code/DateTime.zip unzip DateTime.zip
Code
#include <DateTime.h> #include <DateTimeStrings.h> #define TIME_MSG_LEN 11 // time sync to PC is HEADER and unix time_t as ten ascii digits #define TIME_HEADER 255 // Header tag for serial time sync message void setup(){ Serial.begin(9600); } void loop(){ getPCtime(); // try to get time sync from pc if(DateTime.available()) { // update clocks if time has been synced unsigned long prevtime = DateTime.now(); while( prevtime == DateTime.now() ) // wait for the second to rollover ; DateTime.available(); //refresh the Date and time properties digitalClockDisplay( ); // update digital clock // send our time to an app listening on the serial port Serial.print( TIME_HEADER,BYTE); // this is the header for the current time Serial.println(DateTime.now()); } } void getPCtime() { // if time available from serial port, sync the DateTime library while(Serial.available() >= TIME_MSG_LEN ){ // time message if( Serial.read() == TIME_HEADER ) { time_t pctime = 0; for(int i=0; i < TIME_MSG_LEN -1; i++){ char c= Serial.read(); if( c >= '0' && c <= '9') pctime = (10 * pctime) + (c - '0') ; // convert digits to a number } DateTime.sync(pctime); // Sync DateTime clock to the time received on the serial port } } } void digitalClockDisplay(){ // digital clock display of current time Serial.print(DateTime.Hour,DEC); printDigits(DateTime.Minute); printDigits(DateTime.Second); Serial.print(" "); Serial.print(DateTimeStrings.dayStr(DateTime.DayofWeek)); Serial.print(" "); Serial.print(DateTimeStrings.monthStr(DateTime.Month)); Serial.print(" "); Serial.println(DateTime.Day, DEC); } void printDigits(byte digits){ // utility function for digital clock display: prints colon and leading 0 Serial.print(":"); if(digits < 10) Serial.print('0'); Serial.print(digits,DEC); }