نمایش نتایج: از 1 به 10 از 49
Like Tree14 لایک

موضوع: ماژول ساعت فوق دقیق ds3231 با رابط i2c

Hybrid View

  1. #1
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    7
    خیلی ممنون از پاسختون. اما مشکل حل نشد. همه اینها رو قبلا امتحان کرده بودم. پینها رو که روی برد تغییر میدم داخل کد هم اصلاح میکنم. هم با برد اونو و هم مگا. احتمالا ماژول مشکل داره.

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط _hadi نمایش پست ها
    خیلی ممنون از پاسختون. اما مشکل حل نشد. همه اینها رو قبلا امتحان کرده بودم. پینها رو که روی برد تغییر میدم داخل کد هم اصلاح میکنم. هم با برد اونو و هم مگا. احتمالا ماژول مشکل داره.
    آدرس i2c رو هم چک کردید؟

    اگر آره زنگ بزنید فروشگاه ببیند شرایط مرجوعی رو برای برگردوندن دارید

  3. #3
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    7
    بله همون اول چک کردم.
    خوب قیمت چندانی نداره که توجیح مرجوع کردن داشته باشه. فقط خیلی لازم*اش دارم و تهران نتونستم پیداش کنم. یک ماژول شبکه هم گرفته بودم و تلاش کردم از اون برای سینک کردن ساعت جهانی با دیتای ساعت داخل بردم استفاده کنم که باز هم موفق نبودم!

  4. #4
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط _hadi نمایش پست ها
    بله همون اول چک کردم.
    خوب قیمت چندانی نداره که توجیح مرجوع کردن داشته باشه. فقط خیلی لازم*اش دارم و تهران نتونستم پیداش کنم. یک ماژول شبکه هم گرفته بودم و تلاش کردم از اون برای سینک کردن ساعت جهانی با دیتای ساعت داخل بردم استفاده کنم که باز هم موفق نبودم!
    این کد رو هم تست کنید لطفا:
    کد:
    #include "Wire.h"
    #define DS3231_I2C_ADDRESS 0x68
    // Convert normal decimal numbers to binary coded decimal
    byte decToBcd(byte val)
    {
      return( (val/10*16) + (val%10) );
    }
    // Convert binary coded decimal to normal decimal numbers
    byte bcdToDec(byte val)
    {
      return( (val/16*10) + (val%16) );
    }
    void setup()
    {
      Wire.begin();
      Serial.begin(9600);
      // set the initial time here:
      // DS3231 seconds, minutes, hours, day, date, month, year
      setDS3231time(30,42,21,4,26,11,14);
    }
    void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
    dayOfMonth, byte month, byte year)
    {
      // sets time and date data to DS3231
      Wire.beginTransmission(DS3231_I2C_ADDRESS);
      Wire.write(0); // set next input to start at the seconds register
      Wire.write(decToBcd(second)); // set seconds
      Wire.write(decToBcd(minute)); // set minutes
      Wire.write(decToBcd(hour)); // set hours
      Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
      Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
      Wire.write(decToBcd(month)); // set month
      Wire.write(decToBcd(year)); // set year (0 to 99)
      Wire.endTransmission();
    }
    void readDS3231time(byte *second,
    byte *minute,
    byte *hour,
    byte *dayOfWeek,
    byte *dayOfMonth,
    byte *month,
    byte *year)
    {
      Wire.beginTransmission(DS3231_I2C_ADDRESS);
      Wire.write(0); // set DS3231 register pointer to 00h
      Wire.endTransmission();
      Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
      // request seven bytes of data from DS3231 starting from register 00h
      *second = bcdToDec(Wire.read() & 0x7f);
      *minute = bcdToDec(Wire.read());
      *hour = bcdToDec(Wire.read() & 0x3f);
      *dayOfWeek = bcdToDec(Wire.read());
      *dayOfMonth = bcdToDec(Wire.read());
      *month = bcdToDec(Wire.read());
      *year = bcdToDec(Wire.read());
    }
    void displayTime()
    {
      byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
      // retrieve data from DS3231
      readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
      &year);
      // send it to the serial monitor
      Serial.print(hour, DEC);
      // convert the byte variable to a decimal number when displayed
      Serial.print(":");
      if (minute<10)
      {
        Serial.print("0");
      }
      Serial.print(minute, DEC);
      Serial.print(":");
      if (second<10)
      {
        Serial.print("0");
      }
      Serial.print(second, DEC);
      Serial.print(" ");
      Serial.print(dayOfMonth, DEC);
      Serial.print("/");
      Serial.print(month, DEC);
      Serial.print("/");
      Serial.print(year, DEC);
      Serial.print(" Day of week: ");
      switch(dayOfWeek){
      case 1:
        Serial.println("Sunday");
        break;
      case 2:
        Serial.println("Monday");
        break;
      case 3:
        Serial.println("Tuesday");
        break;
      case 4:
        Serial.println("Wednesday");
        break;
      case 5:
        Serial.println("Thursday");
        break;
      case 6:
        Serial.println("Friday");
        break;
      case 7:
        Serial.println("Saturday");
        break;
      }
    }
    void loop()
    {
      displayTime(); // display the real-time clock data on the Serial Monitor,
      delay(1000); // every second
    }
    رفرنس: Tutorial - Using DS1307 and DS3231 Real-time Clock Modules with Arduino
    فقط این که یادتون نره زمان رو مطابق زمان واقعی دستی ست کنید.چ
    تابع setDS3231time
    ویرایش توسط magmagmary : 09-19-2016 در ساعت 04:14 AM
    لایک کردن

  5. #5
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    7
    خیلی ممنون. خروجی این شد: 45:165:85 165/165/165 Day of week:
    زمان رو هم تنظیم کردم.

  6. #6
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط _hadi نمایش پست ها
    خیلی ممنون. خروجی این شد: 45:165:85 165/165/165 Day of week:
    زمان رو هم تنظیم کردم.
    جالبه !!!

    اتصالت درست
    کد درست
    زمان رو هم که ست می کنید.
    یه پیشنهاد دیگه
    ممکنه ممکنه جواب بده
    باتری سکه ایت رو عوض کن یا با ولت متر بگیر چند ولته ؟

  7. #7
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    7
    برد و اتصالات و کد و خروجی در عکسهای پیوست.
    باطری lir2032. البته بعید میدانم ارتباطی با مشکل داشته باشد.
    تصاویر کوچک شده (Thumbnails) پیوست شده تصاویر کوچک شده (Thumbnails) پیوست شده wp_20160920_20_19_04_pro.jpg   ds3231-output.jpg  

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO