0
Οι μετατροπές που χρειάζονται για να γίνει αυτό που θες:
Εννοείται πως για να ξεκινήσει να δουλεύει το ρολόϊ με την ώρα του υπολογιστή σου, πρέπει να τρέξεις την μικρήΚώδικας:#include <Time.h> #include <SPI.h> #define TIME_HEADER "Τ" // Header tag for serial time sync message #define TIME_REQUEST 7 // ASCII bell character requests a time sync message int tenths = 0; int units = 0 ; int temp,hours,minutes,seconds = 0; unsigned long pctime; boolean updateTime = false; boolean updateDate = false; uint8_t spi_save; //======================================================================= void setup(void) { Serial.begin(9600); pinMode(13, OUTPUT); Serial.println("Waiting for sync message"); Serial.println(" from Processing or from "); Serial.println("Serial Monitor with format"); Serial.println("Txxxxxxxxxx(x = Unix time)"); setSyncProvider(requestSync); //set function to call when sync required } //======================================================================= void loop() { if (Serial.available()) { processSyncMessage(); } if (timeStatus()!= timeNotSet) { digitalClockDisplay(); } if (timeStatus() == timeSet) { digitalWrite(13, HIGH); // LED on if synced } else { digitalWrite(13, LOW); // LED off if needs refresh } delay(1000); } //======================================================================= void digitalClockDisplay() { // digital clock display of the time byte zeroes; if(updateDate == true) { Serial.print(day()); Serial.print("/"); Serial.print(month()); Serial.print("/"); Serial.println(year()); updateDate = false; } zeroes = hour(); if(zeroes < 10) { Serial.print("0"); } Serial.print(hour()); Serial.print(":"); zeroes = minute(); if(zeroes < 10) { Serial.print("0"); } Serial.print(minute()); Serial.print(":"); zeroes = second(); if(zeroes < 10) { Serial.print("0"); } Serial.print(second()); Serial.println(" "); Serial.println("==========================="); updateDate = true; } //======================================================================= void printDigits(byte digits) { if(digits < 10) { Serial.print('0'); } Serial.print(digits,DEC); units = (digits%10); tenths = ((digits/10)%10); } //======================================================================= void processSyncMessage() { byte serBuffer = Serial.read(); const unsigned long DEFAULT_TIME = 1420070400; // Jan 1 2015 if(serBuffer == 'T' ) { pctime = Serial.parseInt(); delay(1000); if(pctime >= DEFAULT_TIME) { // check the integer is a valid time (greater than Jan 1 2015) setTime(pctime); // Sync Arduino clock to the time received on the serial port updateTime = true; updateDate = true; } } } //======================================================================= time_t requestSync() { Serial.write(TIME_REQUEST); return 0; // the time will be sent later in response to serial mesg } //======================================================================= uint16_t color565(uint8_t r, uint8_t g, uint8_t b) { return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); } //======================================================================= //======================================================================= //======================================================================= //======================================================================= //======================================================================= //=======================================================================
εφαρμογή του Processing όπως περιγράφω πιο πάνω. Μόλις ξεκινήσει η εφαρμογή, συγχρονίζεται και το ρολόϊ
με την ώρα του συστήματος (όχι ώρα UTC ή κάτι άλλο, με όποια ώρα έχει το σύστημά σου).
Στη σειριακή θα βλέπεις την πληροφορία έτσι:
Τώρα για το άλλο που λες, δεν ξέρω τι μπορεί να συμβαίνει. Πρέπει κατά τα γνωστά τις βιβλιοθήκες να τις έχεις σε συγκεκριμένο φάκελλο και να ξανα-ξεκινήσεις το IDE για να χτιστεί και να το κάψεις. Σε κάθε περίπτωση, αν θες βάλε τα λάθη που σου βγάζει να δούμε τι φταίει.Κώδικας:=========================== 30/8/2015 13:26:54 ===========================