Σελίδα 2 από 2 ΠρώτηΠρώτη 1 2
Εμφάνιση αποτελεσμάτων : 11 έως 17 από 17

Θέμα: 2.4" TFT ρολόϊ με Arduino

  1. #11
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από her Εμφάνιση μηνυμάτων
    ...
    Θέλω να μετατρέψω τον κώδικα σου και να διαβάζω την ώρα του υπολογιστή και να την απεικονίζω μέσω σειριακής, επειδή δεν έχω τέτοια οθόνη να βάλω. Τι θα πρέπει να μετατραπεί στον κώδικα;
    Οι μετατροπές που χρειάζονται για να γίνει αυτό που θες:

    Κώδικας:
    
    #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 ή κάτι άλλο, με όποια ώρα έχει το σύστημά σου).

    Στη σειριακή θα βλέπεις την πληροφορία έτσι:
    Κώδικας:
    ===========================
    30/8/2015
    13:26:54 
    ===========================
    Τώρα για το άλλο που λες, δεν ξέρω τι μπορεί να συμβαίνει. Πρέπει κατά τα γνωστά τις βιβλιοθήκες να τις έχεις σε συγκεκριμένο φάκελλο και να ξανα-ξεκινήσεις το IDE για να χτιστεί και να το κάψεις. Σε κάθε περίπτωση, αν θες βάλε τα λάθη που σου βγάζει να δούμε τι φταίει.

    0 Not allowed! Not allowed!

  2. Ένα μέλος ευχαρίστησε τον manolena για αυτό το χρήσιμο μήνυμα:

    her (30-08-15)

  3. #12
    Μέλος Το avatar του χρήστη her
    Όνομα
    Ηρακλής
    Εγγραφή
    Jun 2007
    Περιοχή
    Αργυρούπολη
    Μηνύματα
    1.121

    Προεπιλογή

    Σε ευχαριστω. Θα το δοκιμασω και θα σου πω. Εχει διαθεσημο και τον κωδικα που εχεις φτιαξει στο processing

    0 Not allowed! Not allowed!

  4. #13
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από her Εμφάνιση μηνυμάτων
    Σε ευχαριστω. Θα το δοκιμασω και θα σου πω. Εχει διαθεσημο και τον κωδικα που εχεις φτιαξει στο processing
    Δες πιο πάνω στο μήνυμα #9 το συνημμένο. Πρέπει να έχεις εγκατεστημένο το Processing για να τρέξεις το αρχειάκι.

    0 Not allowed! Not allowed!

  5. #14
    Μέλος Το avatar του χρήστη her
    Όνομα
    Ηρακλής
    Εγγραφή
    Jun 2007
    Περιοχή
    Αργυρούπολη
    Μηνύματα
    1.121

    Προεπιλογή

    στο arduino δεν εχω σφαλματα
    στο porcessing μου βγαζει Η κλάση "GregorianCalendar" δεν υπάρχει. Πρέπει να εισάγω κάποια βιβλιοθήκη;

    0 Not allowed! Not allowed!

  6. #15
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από her Εμφάνιση μηνυμάτων
    ...
    στο porcessing μου βγαζει Η κλάση "GregorianCalendar" δεν υπάρχει. Πρέπει να εισάγω κάποια βιβλιοθήκη;
    Στην αρχή του κώδικα στο Processing βάλε αυτή τη γραμμή:
    Κώδικας:
    import java.util.Calendar;
    Εγώ έχω το processing-2.0b6, εσύ πρέπει να έχεις το τελευταίο, υπάρχει θέμα απο την έκδοση 2.0b6 και μετά.

    0 Not allowed! Not allowed!

  7. #16
    Μέλος Το avatar του χρήστη her
    Όνομα
    Ηρακλής
    Εγγραφή
    Jun 2007
    Περιοχή
    Αργυρούπολη
    Μηνύματα
    1.121

    Προεπιλογή

    Μάνο μου σε ευχαριστώ πολύ. Η εντολή που μου είπες δεν δούλεψε αλλά κατέβασα την έκδοση 1.5.1 και λειτουργεί. Βέβαια στην ουσία δεν μπορώ να το δοκιμάσω γιατί όταν του εγκαθιστώ την ώρα/ημερομηνία με το προγραμματάκι σου δεν μπορώ να έχω το arduino στην σειριακή οθόνη ήδη ανοιχτό. Αν του περάσω πρώτα την ώρα και μετά ανοίξω την σειριακή οθόνη τότε κάνει επανεκκίνηση οπότε την χάνει.
    Στην εφαρμογή που θέλω να κάνω θα είναι μόνιμα συνδεδεμένο με τον υπολογιστή για να βλέπω κάποια δεδομένα στην σειριακή οθόνη. Δεν έχω άλλη οθόνη. Άρα φαντάζομαι ότι για να το κάνω αυτό θα πρέπει ή να αποθηκεύσω την ώρα στην flash ή με real time με μπαταρία;
    Σε ευχαριστώ πάρα πολύ για τον χρόνο σου

    0 Not allowed! Not allowed!

  8. #17
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Ίσως θα μπορούσες να λύσεις το θέμα αυτό, φτιάχνοντας μια δεύτερη software σειριακή πόρτα με τη βοήθεια της βιβλιοθήκης NewSoftSerial. Απο την κανονική θα προγραμματίζεται και θα συγχρονίζεται ο Arduino με την ώρα συστήματος και απο την άλλη θα μπορείς (μέσω ενός shift leveler) να παρακολουθείς την πληροφορία.

    Αυτό μπορεί να σε βοηθήσει:

    https://www.arduino.cc/en/Tutorial/TwoPortReceive
    http://www.fiz-ix.com/2012/12/arduin...erial-devices/

    0 Not allowed! Not allowed!

Σελίδα 2 από 2 ΠρώτηΠρώτη 1 2

Παρόμοια Θέματα

  1. TFT LCD 4.3" τρίλιζα με Arduino DUE
    By manolena in forum Παρουσίαση Ολοκληρωμένων Κατασκευών
    Απαντήσεις: 13
    Τελευταίο Μήνυμα: 12-08-16, 17:30
  2. Αναζήτηση οθονών TFT 8" & 10,2" και 2 διαφ. καρτες γραφικων σε 1 PC γινεται;
    By stelios2000 in forum Κυκλώματα Εικόνας-'Ηχου & Φωτισμού
    Απαντήσεις: 6
    Τελευταίο Μήνυμα: 28-07-09, 07:11
  3. Διάσταση TFT οθόνης H/Y (22" vs. 19")...
    By Γιώργος Ανώνυμος in forum Software Η/Υ
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 18-09-08, 22:24

Tags for this Thread

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας