Difference between revisions of "Arduino: Time PC Sync"
Jump to navigation
Jump to search
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) (→Code) |
||
(One intermediate revision by the same user not shown) | |||
Line 11: | Line 11: | ||
cd /usr/share/arduino/libraries/ | cd /usr/share/arduino/libraries/ | ||
+ | |||
+ | atau | ||
+ | |||
+ | cd ~/Arduino/libraries | ||
+ | |||
wget http://playground.arduino.cc/uploads/Code/Time.zip | wget http://playground.arduino.cc/uploads/Code/Time.zip | ||
unzip Time.zip | unzip Time.zip | ||
+ | cd Time | ||
+ | gedit DateStrings.cpp | ||
+ | |||
+ | Tambahkan di | ||
+ | |||
+ | char > char const | ||
+ | PGM_P > PGM_P const | ||
==Code== | ==Code== | ||
Line 80: | Line 92: | ||
} | } | ||
+ | ==PC Sync== | ||
+ | Lakukan | ||
+ | date +T%s\n > /dev/ttyACM0 | ||
+ | Untuk mensinkronisasi waktu | ||
==Referensi== | ==Referensi== | ||
* http://playground.arduino.cc/Code/time | * http://playground.arduino.cc/Code/time |
Latest revision as of 15:51, 26 May 2018
Sumber: http://playground.arduino.cc/Code/time
Siapkan Library
Download dari
Extrak
cd /usr/share/arduino/libraries/
atau
cd ~/Arduino/libraries
wget http://playground.arduino.cc/uploads/Code/Time.zip unzip Time.zip cd Time gedit DateStrings.cpp
Tambahkan di
char > char const PGM_P > PGM_P const
Code
#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 // T1262347200 //noon Jan 1 2010 void setup() { Serial.begin(9600); } void loop(){ if(Serial.available() ) { processSyncMessage(); } if(timeStatus() == timeNotSet) Serial.println("waiting for sync message"); else 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 header & 10 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 } } }
PC Sync
Lakukan
date +T%s\n > /dev/ttyACM0
Untuk mensinkronisasi waktu