اطلاعیه

Collapse
No announcement yet.

ماژول ساعت DS1307 RTC

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ماژول ساعت DS1307 RTC

    سلام
    من یک برد مگا 2560 به همراه شیلد شبکه w5100 و همچنین ماژول ساعت DS1307 RTC .
    از کد
    کد:
    #include <DS1307RTC.h>
    #include <Time.h>
    #include <Wire.h>
    
    const char *monthName[12] = {
     "Jan", "Feb", "Mar", "Apr", "May", "Jun",
     "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
    };
    
    tmElements_t tm;
    
    void setup() {
     bool parse=false;
     bool config=false;
    
     // get the date and time the compiler was run
     if (getDate(__DATE__) && getTime(__TIME__)) {
      parse = true;
      // and configure the RTC with this info
      if (RTC.write(tm)) {
       config = true;
      }
     }
    
     Serial.begin(9600);
     while (!Serial) ; // wait for Arduino Serial Monitor
     delay(200);
     if (parse && config) {
      Serial.print("DS1307 configured Time=");
      Serial.print(__TIME__);
      Serial.print(", Date=");
      Serial.println(__DATE__);
     } else if (parse) {
      Serial.println("DS1307 Communication Error :-{");
      Serial.println("Please check your circuitry");
     } else {
      Serial.print("Could not parse info from the compiler, Time=\"");
      Serial.print(__TIME__);
      Serial.print("\", Date=\"");
      Serial.print(__DATE__);
      Serial.println("\"");
     }
    }
    
    void loop() {
    }
    
    bool getTime(const char *str)
    {
     int Hour, Min, Sec;
    
     if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;
     tm.Hour = Hour;
     tm.Minute = Min;
     tm.Second = Sec;
     return true;
    }
    
    bool getDate(const char *str)
    {
     char Month[12];
     int Day, Year;
     uint8_t monthIndex;
    
     if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false;
     for (monthIndex = 0; monthIndex < 12; monthIndex++) {
      if (strcmp(Month, monthName[monthIndex]) == 0) break;
     }
     if (monthIndex >= 12) return false;
     tm.Day = Day;
     tm.Month = monthIndex + 1;
     tm.Year = CalendarYrToTm(Year);
     return true;
    }
    استفاده می کنم و در سریال این پیام نوشته می شود :
    DS1307 Communication Error
    Please check your circuitry

    باید عرض کنم من از یک سنسور ds18b20 به طور جدا استفاده می کنم یعنی به این ساعت وصل نکردم و دما بخوبی کار می کند.

    به پین های آنالوگ 4 و 5 وصل کردم مطمئنم که درسته و همچنین برای اطمینان پین ها رو باهم جابجا کردم اما باز هم همین پیام در سریال می نویسد.
    و همچنین همیشه ساعت روی 13:43 دقیقه هست و هیچوقت جلو نمی رود؟
    منون می شوم راهنماییم کنید.

    #2
    پاسخ : ماژول ساعت DS1307 RTC

    احتمالش هست که کریستال 32.768 کیلوهرتز سالم نباشه یا درست اتصال نکرده باشه
    همچنین باتری بک اپ برای این ای سی مهم است که اگر به پایه این ای سی باتری وصل نباشد وضعیت سرگردانی خواهد داشت.
    The losers find problem in every answer but the winners find an answer in every problem

    FETAMAKER

    دیدگاه

    لطفا صبر کنید...
    X