NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2388 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 3 از 3

موضوع: درخواست مشاوره - راه اندازی ساعت دیحیتال با ماژول ساعت دقیق ds1307، سون سگمنت tm1637

  1. #1
    عضو جدید
    تاریخ عضویت
    Sep 2017
    نوشته ها
    8
    تشکر
    1
    تشکر شده 1 بار در 1 پست

    پیش فرض درخواست مشاوره - راه اندازی ساعت دیحیتال با ماژول ساعت دقیق ds1307، سون سگمنت tm1637

    درود
    نمی دونم جای درستی تاپیک زدم یا خیر..

    چون برای نخستین باری بود که قصد داشتم ساعت دیجیتال بسازم، لذا بجای خریدن ماژول ساعت دقیق DS3232، ماژول ساعت دقیق DS1307 و سون سگمنت TM1637 رو از فروشگاه آفتاب رایانه خریدم. امّا در اینترنت آموزش و کدی که مناسب با اکوئیپمنت من باشه پیدا نکردم، تا اینکه در سایت Arduino.cc یک آموزش به زبان فکر کنم فرانسوی (یا زبانی دیگر) پیدا کردم. پس از اسمبل سخت افزار و آپلود کد مربوط در آردوینو، ساعت کار نکرد. در بخش Serial Monitor عملکرد رو چک کردم و دیدم ساعت کار می کنه. پس متوجه شدم که خروجی به سون سگمنت انجام نمیشه. چون آردوینو دست ساز خودم بود، روی آردوینو Uno اصلی (اورجینال نیست) تست کردم که شاید مشکل از آردوینوی خودم بوده باشه ولی نتیجه یکی بود.
    سیم ها، کانکشن ها، ماژول ها، و همه چیز رو چک و تست کردم. همه چیز سالمه و خوب کار می کنه. ولی وقتی طبق آموزش (که خیلی خیلی هم ساده ست) قطعات رو اسمبل می کنم، باز هم سون سگمنت روشن نمیشه و ساعت رو نشون نمی ده..
    در زیر، لینک آموزش مورد بحث هست :
    4-digit RTC Clock

    تصویر آموزش اسمبل سخت افزار :

    تصویر ساعت اسمبل شده من :

    این هم از کدی که در آموزش آورده شده :

    کد:
    // Reloj digital mostrado a través de un display de 4 dígitos (digitaltube), y con el tiempo // proporcionado por un Tiny RTC de Catalex. // Software programado por PentiumCadiz 7-1-17, basado en el ejemplo de la librería DS1307RTC // y en el ejemplo de uso del display de Prometec http://www.prometec.net/display-con-interface/ #include "Wire.h" #include "Time.h" #include "DS1307RTC.h" #include "TM1637.h" #define CLK 9 #define DIO 8 TM1637 Display1(CLK, DIO); int8_t Digitos[] = {0,1,2,3}; int horas; int minutos; boolean alterna; void setup() { Serial.begin(9600); while (!Serial) ; // wait for serial delay(200); Serial.println("DS1307RTC Read Test"); Serial.println("-------------------"); Display1.init(); Display1.set(); } void loop() { tmElements_t tm; if (RTC.read(tm)) { Serial.print("Ok, Time = "); print2digits(tm.Hour); Serial.write(':'); print2digits(tm.Minute); Serial.write(':'); print2digits(tm.Second); Serial.print(", Date (D/M/Y) = "); Serial.print(tm.Day); Serial.write('/'); Serial.print(tm.Month); Serial.write('/'); Serial.print(tmYearToCalendar(tm.Year)); Serial.println(); horas = tm.Hour; minutos = tm.Minute; CalculaDigitos(horas, minutos); if (alterna) { Display1.point(POINT_OFF); alterna = false; } else { Display1.point(POINT_ON); alterna = true; } } else { if (RTC.chipPresent()) { Serial.println("The DS1307 is stopped. Please run the SetTime"); Serial.println("example to initialize the time and begin running."); Serial.println(); } else { Serial.println("DS1307 read error! Please check the circuitry."); Serial.println(); } delay(9000); } delay(1000); } void print2digits(int number) { if (number >= 0 && number < 10) { Serial.write('0'); } Serial.print(number); } void CalculaDigitos( int hor, int minu) { int8_t Digit0 = minu %10 ; int8_t Digit1 = (minu % 100) / 10 ; int8_t Digit2 = hor % 10 ; int8_t Digit3 = (hor % 100) / 10 ; Digitos[3] = Digit0 ; Digitos[2] = Digit1 ; Digitos[1] = Digit2 ; Digitos[0] = Digit3 ; Display1.display(Digitos); }
    ابتدا ماژول ساعت دقیق DS1307 رو توسط اسکچ Set Time از کتابخاته DS1307RTC دقیق کردم، و بعد کد فوق رو آپلود کردم..
    لطفاً، بفرمائید مشکل کار از کجاست، و چطور ساعت به راه می افته.

    پیشاپیش، سپاس..

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    عضو جدید
    تاریخ عضویت
    Sep 2017
    نوشته ها
    8
    تشکر
    1
    تشکر شده 1 بار در 1 پست

    پیش فرض

    کسی نمی دونه ؟

  4. #3
    عضو جدید
    تاریخ عضویت
    Sep 2017
    نوشته ها
    8
    تشکر
    1
    تشکر شده 1 بار در 1 پست

    پیش فرض

    درود
    مشکلم حل شد..
    اوّل اینکه بجای پین های 8 و 9 دیجیتال، 5 و 6 رو جایگزین کردم.
    و دوّم اینکه کلّیه سیم های بردبورد رو جدا کردم، و بجاشون سیم های رشته ای رو به هردو ماژول لحیم کردم..
    شاید برخی بخوان مثل من از این دو ماژول بخصوص (ماژول ساعت دقیق DS1307 و ماژول سون سگمنت TM1637) برای ساخت ساعت استفاده کنند.
    پیشنهاد می کنم این کد رو برای آموزش جداگانه قرار بدید.
    سپاسم بسیار
    کد :
    کد:
    // Reloj digital mostrado a través de un display de 4 dígitos (digitaltube), y con el tiempo
    // proporcionado por un Tiny RTC de Catalex.
    // Software programado por PentiumCadiz 7-1-17, basado en el ejemplo de la librería DS1307RTC 
    // y en el ejemplo de uso del display de Prometec  Display con interface | Tutoriales Arduino 
    #include <TM1637.h>
    #include <Wire.h>
    #include <Time.h>
    #include <DS1307RTC.h>
    #define CLK 6
    #define DIO 5
    TM1637 Display1(CLK, DIO);
      int8_t Digitos[] = {0,1,2,3};
      int horas;
      int minutos;
      boolean alterna;
    void setup() {
      Serial.begin(9600);
      while (!Serial) ; // wait for serial
      delay(200);
      Serial.println("DS1307RTC Read Test");
      Serial.println("-------------------");
      Display1.set();
      Display1.init();
      
    }
    void loop() {
      tmElements_t tm;
      if (RTC.read(tm)) {
        Serial.print("Ok, Time = ");
        print2digits(tm.Hour);
        Serial.write(':');
        print2digits(tm.Minute);
        Serial.write(':');
        print2digits(tm.Second);
        Serial.print(", Date (D/M/Y) = ");
        Serial.print(tm.Day);
        Serial.write('/');
        Serial.print(tm.Month);
        Serial.write('/');
        Serial.print(tmYearToCalendar(tm.Year));
        Serial.println();
        horas = tm.Hour;
        minutos = tm.Minute;
        CalculaDigitos(horas, minutos);
        if (alterna)
          {
            Display1.point(POINT_OFF);
            alterna = false;
          }
          else
          {
            Display1.point(POINT_ON);
            alterna = true;
          }
        
      } else {
        if (RTC.chipPresent()) {
          Serial.println("The DS1307 is stopped.  Please run the SetTime");
          Serial.println("example to initialize the time and begin running.");
          Serial.println();
        } else {
          Serial.println("DS1307 read error!  Please check the circuitry.");
          Serial.println();
        }
        delay(9000);
      }
      delay(1000);
    }
    void print2digits(int number) {
      if (number >= 0 && number < 10) {
        Serial.write('0');
      }
      Serial.print(number);
    }
    void CalculaDigitos( int hor, int minu)
       {
          int8_t Digit0 = minu %10 ;
          int8_t Digit1 = (minu % 100) / 10 ;
          int8_t Digit2 = hor % 10 ;
          int8_t Digit3 = (hor % 100) / 10 ;
          Digitos[3] = Digit0 ;
          Digitos[2] = Digit1 ;
          Digitos[1] = Digit2 ;
          Digitos[0] = Digit3 ;
          Display1.display(Digitos);
       }
    ویرایش توسط DesironnA : 15-09-2017 در ساعت 00:49

  5. تشکرها از این نوشته :


موضوعات مشابه

  1. پاسخ: 46
    آخرين نوشته: 19-06-2016, 11:38
  2. پاسخ: 0
    آخرين نوشته: 30-09-2015, 10:08
  3. مدار ساعت مچی دیجیتالی
    توسط hemad.ir در انجمن میکروکنترلرهای 8و16 بیتی
    پاسخ: 2
    آخرين نوشته: 22-07-2015, 04:43
  4. مشکل طول کابل در سرعت در شبکه یک بورد سامسونگ
    توسط microprocesor_2002 در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 2
    آخرين نوشته: 16-07-2013, 01:14
  5. ساعت برروي سون سگمنت
    توسط imported_aliabas در انجمن AVR
    پاسخ: 8
    آخرين نوشته: 01-01-2012, 00:04

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

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