نمایش نتایج: از 1 به 5 از 5
Like Tree1 لایک
  • 1 Post By دسیرونا

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

  1. #1
    Junior Member
    تاریخ عضویت
    Jan 2017
    نوشته ها
    24

    Question درخواست مشاوره - راه اندازی ساعت دیحیتال با ماژول ساعت دقیق 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. #2
    Junior Member
    تاریخ عضویت
    Jan 2017
    نوشته ها
    24
    کسی نمی دونه ؟

  3. #3
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    227
    نقل قول نوشته اصلی توسط دسیرونا نمایش پست ها
    کسی نمی دونه ؟
    با سلام
    شما وقتی برای بار اول مقدار به ماژول ساعت بدهید ، ماژول خودش شروع به کار میکنه و فقط شما باید مقدار شمارش را دریافت کنید

  4. #4
    Junior Member
    تاریخ عضویت
    Jan 2017
    نوشته ها
    24
    نقل قول نوشته اصلی توسط meysamam نمایش پست ها
    با سلام
    شما وقتی برای بار اول مقدار به ماژول ساعت بدهید ، ماژول خودش شروع به کار میکنه و فقط شما باید مقدار شمارش را دریافت کنید
    ذرود
    باز به شما که سری به این تاپیک زدید و سعی کردید بهم کمک کنید..!
    سخت افزار رو چک کردم. ماژول ساعت دقیق در بخش Serial Monitot کار صحیحش رو داره نشون میده :
    DS1307RTC Read Test
    ——————-
    Ok, Time = 12:54:58, Date (D/M/Y) = 14/9/2017
    Ok, Time = 12:54:59, Date (D/M/Y) = 14/9/2017
    Ok, Time = 12:55:00, Date (D/M/Y) = 14/9/2017
    Ok, Time = 12:55:01, Date (D/M/Y) = 14/9/2017
    Ok, Time = 12:55:02, Date (D/M/Y) = 14/9/2017
    Ok, Time = 12:55:03, Date (D/M/Y) = 14/9/2017
    ..
    برای چک سون سگمنت هم، از اسکچ TM1637Test از کتابخانه TM1637 استفاده کردم و حتّی پین های ساعت و دیتا رو به ترتیب روی ۹ و ۸ دیجیتال (مثل پین های مربوط به کد ساعت) گذاشتم. سون سگمنت شروع به کار کرد. پس سالمه.
    برای تست آردوینو هم (چون آردوینوی دست ساز خودم هست)، از دو آردوینوی Uno و Leonardo استفاده کردم، بروی سه بردبورد و سیم های بردبورد مختلف استفاده کردم، ولی باز کد ساعت جواب نداد.. تنها چیزی که به ذهنم می رسه، اینه که چون کتابخانه های مختلفی برای DS1307 و TM1637 نصب کردم، شاید قاطی می کنه و خروجی سون سگمنت ست نمیشه.
    این کتابخانه ها نصب هستند :
    کتابخانه های مربوط به DS1307 :
    RTClib-master
    Adafruit_LED_Backpack_Library
    RTCLib_by_NeiroN
    DS1307_Emulator
    Rtc_by_Makuna
    DS1307newAlarms
    DS1307RTC
    MD_DS1307

    کتابخانه های مربوط به TM1637 :
    arduino-tm1637-master
    TM1637
    TM1637-1.1.0
    arduino-tm1637-master
    DigitalTube
    من تجربه ای روی آردوینو ندارم. فقط یک بار با دو تا ماژول nRF24L01+PA+LNA و دو تا آردوینو Uno R3 واکی تاکی ساختم. باید ببخشید اگر بخاطر یک ساعت ساده و مبتدی اینقدر سئوال می پرسم..
    بنظرتون مشکل از کتابخانه هاست ؟

  5. #5
    Junior Member
    تاریخ عضویت
    Jan 2017
    نوشته ها
    24
    درود
    مشکلم حل شد..
    اوّل اینکه بجای پین های 8 و 9 دیجیتال، 5 و 6 رو جایگزین کردم.
    و دوّم اینکه کلّیه سیم های بردبورد رو جدا کردم، و بجاشون سیم های رشته ای رو به هردو ماژول لحیم کردم..

    شاید برخی بخوان مثل من از این دو ماژول بخصوص (ماژول ساعت دقیق DS1307 و ماژول سون سگمنت TM1637) برای ساخت ساعت استفاده کنند.
    پیشنهاد می کنم این کد رو برای آموزش جداگانه قرار بدید.
    سپاسم بسیار
    کد :
    [CODE]// 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 <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%2
    ویرایش توسط دسیرونا : 09-14-2017 در ساعت 07:25 PM
    لایک کردن

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

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

SEO by vBSEO