Unable to sync computer time with Arduino via USB

I want to synchronize Time from my pc with arduino. I use their temporary library, but it does not work.

How can I make arduino have the same time as on my computer? I am currently using mac.

Their docs say:

On a unix system, you can set the time using the shell command:

TZ_adjust=-8; echo T$(($(date +%s)+6060$TZ_adjust)) > /dev/tty.usbserial-A8008pym

I tried on the terminal

 >export TZ_adjust=-8; echo T$(($(date +%s)+6060$TZ_adjust)) > /dev/tty.usbmodemfd131 

and I get a waiver of rights.

What am I doing wrong? Is there an easier way to synchronize time on arduino with my computer?

The 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 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 } 
+7
source share
1 answer

Conrad and I found a solution after a 20 minute chat :

 To set the variable to EST TZ_adjust=-5; sudo echo "T$(($(date +%s)+60*60*$TZ_adjust))" >/dev/tty.usbmodemfa131 
+8
source

All Articles