صفحه 5 از 5 نخستنخست ... 345
نمایش نتایج: از 41 به 49 از 49
Like Tree14 لایک

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

  1. #41
    مدیر گروه
    تاریخ عضویت
    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
    لایک کردن

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

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

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

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

  5. #45
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط _hadi نمایش پست ها
    برد و اتصالات و کد و خروجی در عکسهای پیوست.
    باطری lir2032. البته بعید میدانم ارتباطی با مشکل داشته باشد.

    یه نفر تو یکی از فروم ها یه چیز متفاوت گفته
    گفته که وقتی پاور آردوینو رو از USB می گرفته همین خروجی رو داشته اما وقتی با 12 ولت فراهم کرده اوکی شده

    شما یه کاری کن پاور ماژول ساعتت رو از یه پاور 5 ولت اکسترنال تهیه کن ببین مشکلت حل میشه ؟

    رفرنس:Why doesnt DS1307 work on my arduino?

  6. #46
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط _hadi نمایش پست ها
    برد و اتصالات و کد و خروجی در عکسهای پیوست.
    باطری lir2032. البته بعید میدانم ارتباطی با مشکل داشته باشد.

    یه کاری کنید به جای اون دو تا پین از پین A4 و A5 برای ارتباط i2 استفاده کنید

  7. #47
    Junior Member
    تاریخ عضویت
    Jul 2016
    نوشته ها
    7
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    یه کاری کنید به جای اون دو تا پین از پین A4 و A5 برای ارتباط i2 استفاده کنید
    خوش بختانه امروز این ماژول رو پیدا کردم و دوباره خریدم. کاملا هم درست کار میکنه. قبلیه ایراد داشت.
    لایک کردن

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

    خدا رو شکر مشکلتون حل شد

    و ناراحت کننده که نتونستید از ماژول قبلی استفاده کنید و زمانتون به هدر رفت.

  9. #49
    Junior Member
    تاریخ عضویت
    Sep 2016
    نوشته ها
    11
    نقل قول نوشته اصلی توسط _hadi نمایش پست ها
    سلام

    من یکی از این ماژولها از آفتاب رایانه تهیه کردم و با کدهای این پست و پست دیگه*ی فروم در مورد این ماژول و چندتا سایت خارجیه دیگه تست*اش کردم اما همیشه اطلاعات رو با خطا نشون میده. مثلا اینطوری: Time:165:165:165.
    پینهای sda و scl رو هم درست متصل میکنم. از پینهای مختلفی هم استفاده کردم اما جواب تغییری نکرد. A4, a5 و غیره. ممکنه مشکل سخت افزاری داشته باشه یا جایی رو دارم اشتباه میکنم؟!

    ممنون.
    من هم 3 تا ماژول از افتاب رایانه خریداری کردم که فقط یکیش درست عمل میکنه ، باطری عوض کردم ، ولتاژ گرفتم درست بود و کلی کار دیگه
    ولی جالب اینجاست دو تا ماژولی که خرابه ای سی هاش مثل هم هست و اونی که سالمه فرق داره ای سیش

    این هم نوشته های روی ای سی سالم:
    Ds3231 1sn
    7517a3
    303ab
    روی ای سی هم هشتگ هست و نقطه خالی نیس

    این هم نوشته های روی ای سی خراب :
    Ds3231 1sn
    0839a3
    296aa
    روی ای سی نقطه تو خالی هست

    جالب این جا هست که داخل یوتوب همه ی فیلم ها با اون ای سی سالمه هست که خط سومش ab داره و روی ای سی # هست

    کسی میدونه اون ای سی دومیه رو چکارش باید کرد که درست کار کنه؟

صفحه 5 از 5 نخستنخست ... 345

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

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

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

SEO by vBSEO