آردوینو آموزش آردوینو نمایشگر Segment پروژه های آردوینو

آموزش ساخت ساعت دیجیتال ماژول DS1307 نمایشگر سگمنت TM1637

arduino-digital-clock-ds1307-segment--digispark
نوشته شده توسط پریسا پوربلورچیان

زمان و سنجش زمان از پارامترهای مهم ساخت پروژه های اینترنت اشیا است. در آموزش ساخت ساعت دیجیتال با آردوینو و سگمنت به بررسی کامل کدها و راه اندازی آن پرداختیم. حال با توجه به نیاز و درخواست کاربران آموزش ساخت ساعت دیجیتال با استفاده از ماژول ساعت دقیق DS1307 را در این پست در اختیار شما قرار داده‌ایم. این آموزش توسط یکی از کاربران فعال ما ارسال شده است. از این رو از همکاری کاربران در راستای تحقق اهداف بزرگ از جمله رشد سطح علمی جامعه و تلاش برای تبادل اطلاعات کاربران با یکدیگر در مرجع تخصصی الکترونیک دیجی اسپارک صمیمانه سپاسگزاریم. در ادامه این آموزش با مرجع تخصصی آردوینو دیجی اسپارکهمراه باشید.

 

ساختار ماژول سگمنت ۷Segment 4 Digit با تراشه TM1637

ماژول سگمنت، نوعی نمایشگر دیودی است. هر بلوک از سون سگمنت از ۷ ال ای دی مجزا تشکیل شده است. ماژول سگمنت به کار رفته یک نمایشگر چهار دیجیت با ابعاد ۴۲*۲۴ میلی متر است. تراشه این ماژول TM1637 می‌باشد و دارای پروتکل ارتباطی I2C است. همچنین این ماژول دارای ۴ پایه به ترتیب CLK ,DIN ,VCC ,GND بوده و ولتاژ کاری آن بین ۳٫۵ تا ۵ ولت است.

 

ساختار ماژول ماژول ساعت DS1307

کاربرد ماژول DS1307 محصول dallas محاسبه و نگهداری زمان واقعی real time clock می‌باشد. ماژول ساعت دقیق DS1307 می‌تواند ساعت، دقیقه، ثانیه، روز، ماه، سال و ایام هفته را نگهداری و پردازش کند. باطری لیتیومی این ماژول امکان تغذیه و نگهداری زمان DS1307 را به مدت چندین سال فراهم می‌کند. ماژول ساعت DS1307 از طریق ارتباط ۲ سیمه I2C به آردوینو متصل می‌شود. بر روی این ماژول علاوه بر RTC، یک EEPROM سریال به شماره ۲۴C32 با حافظه ۳۲ کیلوبیت تعبیه شده که از طریق رابط I2C مشترک می‌توان به آن دسترسی داشت. همچنین می‌توان بر روی آن حسگر دما نیز به کار برد.

 

وسایل مورد نیاز:

ماژول سگمنت ۷Segment 4 Digit با تراشه TM1637

 ماژول ساعت DS1307 به همراه باتری Battery

کابل فلت ۴۰ رشته نری به مادگی Male to Female

برد آردوینو Arduino Uno R3 با تراشه R3 اورجینال

 

اتصال به آردوینو:

ابتدا اتصالات ماژول ساعت دقیق DS1307 به برد آردوینو را انجام می‌دهیم:

  • پین SLK ماژول ساعت دقیق DS1307 را به پین آنالوگ A5 آردوینو وصل کنید.
  • پین SDA ماژول ساعت دقیق DS1307 را به پبن آنالوگ A4 آردوینو وصل کنید.
  • پین VCC ماژول ساعت دقیق DS1307 را به پین ۳٫۳ ولت آردوینو وصل کنید.
  • پین GND ماژول ساعت دقیق DS1307 را به پبن GND آردوینو وصل کنید.

 

حال اتصالات ماژول سگمنت TM1637 را به برد آردوینو انجام می‌دهیم:

  • پین CLK ماژول سگمنت را به پین ۶ آردوینو اتصال دهید.
  • پین DIO ماژول سگمنت را به پبن ۵ آردوینو اتصال دهید.
  • پین VCC ماژول سگمنت را به پین ۵ ولت آردوینو اتصال دهید.
  • پین GND ماژول سگمنت را به پبن GND آردوینو اتصال دهید.

 

کتابخانه آردوینو Arduino:

کتابخانه‌های مورد نیاز برای آپلود کدها به ترتیب زیر می‌باشد.

  1. (DS1307RTC (by Michael Marglois Version 1.4.0
  2. (Time (by Michael Marglois Version 1.5.0)
  3. (SevenSegmentTM1637 (by Bram Harmsen Version 1.0.0
  4. (TM1637 (Version unknown
  5. (Wire (by Arduino Version 1.0.0

لینک دانلود کتابخانه‌ها در صفحه محصول ماژول ساعت DS1307 به همراه باتری Battery و ماژول سگمنت ۷Segment 4 Digit با تراشه TM1637 قرار گرفته شده است و می‌توانید دانلود کنید. توجه کنید که کتابخانه wire در قسمت Sketch – include library به صورت پیشفرض قرار گرفته شده است.

 

کد برنامه :

#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);
   }

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.

 

پروژه:

برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۶۴ دیدگاه

  • سلام خسته نباشید
    می‌دونم اینجا جاش نیست ولی میخواستم بدونم میشه کاری کرد که با گوشی و یک مدار که به گوشی وصل بشه کنترل مادون قرمز ساخت
    یعنی برای گوشی هایی که سنسور مادون قرمز ندارن یه فرستنده خارجی ساخت البته با تقویت کننده.
    ممنون میشم یه راهنمایی بفرمایید

  • سلام
    یک سوال ساده اما مهم.
    اگر کسی بخواهد که به جای استفاده از بردهای آموزشی خودش بردی رو طراحی کنه باید برای تامین کلاک میکروی ARM که مثلاً قرار هست با فرکانس ۱۰۰MHz یا بالاتر کار کنه باید از چه روشی استفاده کرد؟
    خود میکرو اوسیلاتور داخلی داره تا جایی که من تو کاتالوگ ها خوندم نهایتاً تا ۲۵MHz رو ساپورت میکنه
    آیا از کریستال استفاده می کنند؟
    اصلاً کریستالی با این فرکانس پیدا میشه؟

    • سلام
      از توجه شما ممنونم.
      اول از همه بنده در این زمینه تخصصی ندارم و سوالات مرتبط با پست آموزشی را باید مطرح کنید. دوم اینکه با پیشرفت بردهای امبدد و میکروکنترل هایی که هر کدام کارآیی خاص و منحصر به فردی دارند دیگر نیازی به طراحی برد نخواهید داشت.

  • درود
    بخاطر دقّت نظر و دلسوزی شما و همکارانتون نسبت به خواسته های کاربران و نیز پاسخگویی به سئوالاتشون، بواقع سپاسگذارم..
    ماژول ساعت دقیق DS1307 دچار دو مشکل میشه. یا از ساعت دقیق عقب میفته، یا سریع تر ثانیه میندازه. جایی خونده بودم که مشکل نخست غیرقابل رفعه. امّا در خصوص مشکل دوّم، درست یادم نیست; مثل اینکه باید سر کریستال رو به زمین مدار متّصل کنیم و یادمه تأکید شده بود به هیچ عنوان از لحیم کردن سر کریستال نبایستی استفاده کرد. آیا این راه درسته ؟ و اگر بله، چطور بدون لحیم کردن این کار رو انجام بدم ؟
    سپاسم

    • سلام
      از دقت نظر شما سپاسگزارم.
      در واقع این همان کدهاى ارسالی شماست، اگر در این زمینه راهکارى دارید میتوانید بیان کنید، از دیگر کاربران هم که تجربه کافى دارند تقاضا دارم در این بحث شرکت کنند.

      • درود مجدّد
        مشکل رو حل کردم. از یک موتور ساعت دیواری، المان کریستالش رو جایگزین کریستال ماژول کردم.
        چون ساعت دیواری یک ساعت همگانیه، بنابراین حتّی اگر موتور اون ساعت چینی هم باشه، همیشه از مرغوب ترین کریستال ها در ساخت اون استفاده میشه. بجای خرید کریستال از بازار، بهترین گزینه جایگزینی اون با کریستال موجود در موتور یک ساعت دیواریه..
        سپاسم

        • ایده شما جالب است ولی به نظر بنده اینطور درست نیست. باید علمی تر بررسی شود. حتما اطلاعات کریستال را بیان کنید تا توجیه بهتری برای این قضیه داشته باشیم.

          • این کریستال که به نام کریستال ساعت معروف است ، با فرکانس ۳۲۷۶۸ هرتز کار می کند که از آن برای ایجاد تاخیرهای دقیق زمانی مانند ۱ ثانیه استفاده می شود و در مداراتی مانند تایمر ، ساعت ، کرنومتر و . .. کاربرد دارد .

  • سلام – در مورد ds1307 باید عرض کنم چون از کریستال خارجی استفاده می شود به شدت ناپایدار هست و تحت شرایط محیطی ممکن هست فرکانس از حالت پیش فرض کمی بیشتر یا کمتر باشد ، من در پروژه های صنعتی از ds1307 استفاده نمیکنم و پیشنهاد می کنم از ماژول هایی استفاده کنید که دارای کریستال داخلی می باشند ، نمونه ای از این ماژول ها DS3231 هست که دارای کریستال داخلی بوده و با استفاده از الگو های تعریف شده و تکنیک های شرکت سازنده بر حسب دمای محیط فرکانس را تصحیح میکند و عملکرد دقیق تری ارائه میدهد ، با این حال شاید ماژول های دقیق تری هم موجود باشه اما بنده تا بحال باهاشون کار نکردم – موفق باشید

    • سلام
      از اینکه اطلاعات و تجربیات خود را با دیگر کاربران به اشتراک می‌گذارید، سپاسگزارم.
      موفق باشید.

  • با سلام.من این ماژول رو چجوری به DUE وصل کنم؟
    خوده ds1307 رو به تنهایی دارم(ماژول نیستش)،تقسیم ولتاژِی کردم برای ۳٫۳ ولت اما برای پول آپ چیکار کنم؟

  • سلام خسته نباشین
    من میخوام وقتی که کلیدی زده شد این ماژول ساعت و تاریخ فشرده شدن اون کلید رو تو حافظه ی خودش ذخیره کنه ،چیکار باید کنم ؟

          • سلام مجدد
            پروژه اینه که به وسیله ی بلوتوث یک رله روشن و خاموش شود !
            اسم بلوتوثی که به ماژول بلوتوث ما وصل شده و تایم و تاریخ که تونسته رله رو خاموش و روشن کنه رو ذخیره کنه!
            همچنین ذکر شده با ماژول بلوتوث hc05 و ماژول ds1307 اینکار انجام شود

  • سلام
    من یه پروزه دارم که led ها بر روی یک پروانه سوار اند و با فرستادن اطلاعات ساعت از روی این ماژول ds 1307 به اردینو برنامه ساعت را بگیرد و موتور با چرخش ساعت دقیق را نشان دهد
    اول میخام ماژول ساعت رو پروگرم کنم با اردینو که روی lcd نشون بده و بعدش به اردینو وصل کنم میشه تو این دو قسمت کمکم کنید
    ممنون خانم بلورچیان

    • با سلام
      بله راهنمایی خواهم کرد. مطابق با آموزش ها پیش بروید و در صورت برخورد به مشکل از همین طریق سوالات خود را بپرسید.

  • سلام.
    اگر تغذیه ماژول DS1307 جداگانه تامین بشه بهتر نیست؟ یعنی ممکنه وقتی از آردینو میگیره دچار نویز بشه؟
    من در مدارم df player رو دارم که اونطور که بررسی کردم وقتی از آردینو تغذیه میگیره دچار نویز میشه. چون میخوام پروژه دچار هیچ مشکلی نشه، به نظرتون بهتر نیست تغذیه جدا باشه؟

    • با سلام
      تا به حال در این مورد نویز در مدار صورت نگرفته است و تغذیه ماژول از طریق آردوینو تاثیری ندارد.

  • سلام وقت بخیر
    من یه کیت میخواستم که از ۴ تا ال ای دی به رنگ های مختلف باشه و نسبت به صدایی که توسط میکروفون ازمحیط دریافت میکنه ال ای دی هارو بصورت رندوم روشن کنه /و همچنین ریموت کنترل هم داشته باشه/آیا شما کیتی مشابه با این دارید؟یا طراحی این کیت را میتونید انجام بدید؟

  • سلام خسته نباشید . چرا هر ماژولی ک اموزششو درست میکنید با اردینو میسازین؟ خیلیامون کلا از اردینو استفاده نمیکنیم . اردینو خودش از میکرو avr درست میشه . الان من این ماژولو دارم ولی هیچ جایی اموزش راه اندازیش نیست.

    • با سلام
      با توجه به اینکه میکروکنترلرهای امبدد هر روز در حال توسعه هستند و مدل های جدید با امکانات جدید عرضه می‌شود، نیاز به یادگیری خواهد داشت.
      آموزش های AVR در سایت موجود است، در پست های مرتبط با این موضوع کامنت بگذارید تا توسط کارشناسان AVR بررسی و راهنمایی شود.

  • باسلام.
    کدی که ارسال کرده اید اشکال دارد. ارور میدهد
    دستور زیر رو نمیپذیرد:
    Display1.set();
    فکر کنم اشتباهی توی کد هست. راستی کدهایی رو که اینجا میگذارید تست نمیکنید؟

    • با سلام
      کاربر گرامی تمامی کدها تست شده و پس از اجرا منتشر می‌شود. در نظر داشته باشید بسیاری از کتابخانه ها در صورت آپدیت شدن دستورات آن ها دچار تغییرات می‌شود که نیاز به بررسی و تحلیل دارد. لطفا ارور دریافتی را کامل کپی کرده و ارسال کنید تا بررسی شود.

  • سلام من آردینیو UNO و TM1637 و DS1307 رو تهیه و طبق توضیحات مونتاژ و و با نرم افزار ارتباط دادم ولی وقتی کد بالا رو ارسال می کنم خطا میده و اجرا نمیشه

  • با سلام، وقت عالی بخیر مهندس. من میخوام با همین آی سی ۱۳۰۷ یه ساعت دیجیتالی ۶ رقمی بسازم، ولی نه با TM1637 ، میخوام خودم دیجیت های بزرگ جداگونه بذارم و یه ساعت دیجیتالی ۶ رقمی بسازم که هم ثانیه رو نشون بده هم دقیقه و هم ساعت. برای ۶ رقمی آموزشی هست توی دیجی اسپارک ؟

    • با سلام
      در این خصوص در نمونه برنامه های کتابخانه ds3231 , ds1307 برنامه های پیش فرض برای نمایش روز وجود دارد.

  • سلام
    وقتی برنامه رو توی نرم افزار اردوینو مینویسم ارور میده زیر ;TM1637 Display1(CLK, DIO) خط میکشه .
    در قسمت ارور مینویسه TM1637′ does not name atype

  • سلام من این ساعت درست کردم موقع اپلود کردن ارور میده
    Display1.set() عدد هم داخل پرانتز گذاشتم نشد راهنمایی میکند
    ممنون میشم

    • با سلام
      اولین قدم آپدیت کردن کتابخانه ها است. مطمئن شوید که کلاس ها تغییر نکرده باشد.

  • سلام. این ارور رو میده

    Arduino: 1.8.13 (Windows 10), Board: “Arduino Uno”

    C:\Users\Ahmad\AppData\Local\Temp\arduino_modified_sketch_989692\TM1637_matrix.ino: In function ‘void setup()’:

    TM1637_matrix:22:12: error: ‘class TM1637’ has no member named ‘set’; did you mean ‘send’?

    Display1.set();

    ^~~

    send

    TM1637_matrix:23:12: error: ‘class TM1637’ has no member named ‘init’; did you mean ‘digits’?

    Display1.init();

    ^~~~

    digits

    C:\Users\Ahmad\AppData\Local\Temp\arduino_modified_sketch_989692\TM1637_matrix.ino: In function ‘void loop()’:

    TM1637_matrix:50:18: error: ‘class TM1637’ has no member named ‘point’

    Display1.point(POINT_OFF);

    ^~~~~

    TM1637_matrix:50:24: error: ‘POINT_OFF’ was not declared in this scope

    Display1.point(POINT_OFF);

    ^~~~~~~~~

    TM1637_matrix:55:18: error: ‘class TM1637’ has no member named ‘point’

    Display1.point(POINT_ON);

    ^~~~~

    TM1637_matrix:55:24: error: ‘POINT_ON’ was not declared in this scope

    Display1.point(POINT_ON);

    ^~~~~~~~

    C:\Users\Ahmad\AppData\Local\Temp\arduino_modified_sketch_989692\TM1637_matrix.ino:55:24: note: suggested alternative: ‘PCINT0’

    Display1.point(POINT_ON);

    ^~~~~~~~

    PCINT0

    C:\Users\Ahmad\AppData\Local\Temp\arduino_modified_sketch_989692\TM1637_matrix.ino: In function ‘void CalculaDigitos(int, int)’:

    TM1637_matrix:92:16: error: ‘class TM1637’ has no member named ‘display’; did you mean ‘bitDelay’?

    Display1.display(Digitos);

    ^~~~~~~

    bitDelay

    Multiple libraries were found for “TM1637.h”

    Used: C:\Users\Ahmad\Documents\Arduino\libraries\TM16xx_LEDs_and_Buttons

    Not used: C:\Users\Ahmad\Documents\Arduino\libraries\Grove_4-Digit_Display

    exit status 1

    ‘class TM1637’ has no member named ‘set’; did you mean ‘send’?

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    • با سلام
      همانطور که در ارور مشخص شده است، کلاس ها آپدیت شده است. برای حل این مورد، کتابخانه را آپدیت کنید.
      سپس Example برنامه را باز کنید. یکبار اتصالات را انجام دهید. برنامه جدید را ران کنید.
      کد این برنامه هم به زودی آپدیت خواهد شد.
      نتیجه را از همین طریق اعلام کنید.

  • باسلام من وقتی برنامه رو کامپایل کردم این ارور میدهArduino: 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Board: “Arduino Uno”

    In file included from C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino:5:0:

    C:\Users\MobtakeranNovin\OneDrive\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:19:22: error: ‘tmElements_t’ has not been declared

    static bool read(tmElements_t &tm);

    ^~~~~~~~~~~~

    C:\Users\MobtakeranNovin\OneDrive\Documents\Arduino\libraries\DS1307RTC/DS1307RTC.h:20:23: error: ‘tmElements_t’ has not been declared

    static bool write(tmElements_t &tm);

    ^~~~~~~~~~~~

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino: In function ‘void loop()’:

    sketch_may12a:29:3: error: ‘tmElements_t’ was not declared in this scope

    tmElements_t tm;

    ^~~~~~~~~~~~

    sketch_may12a:31:18: error: expected primary-expression before ‘)’ token

    if (RTC.read(tm)) {

    ^

    sketch_may12a:33:20: error: expected primary-expression before ‘.’ token

    print2digits(tm.Hour);

    ^

    sketch_may12a:35:20: error: expected primary-expression before ‘.’ token

    print2digits(tm.Minute);

    ^

    sketch_may12a:37:20: error: expected primary-expression before ‘.’ token

    print2digits(tm.Second);

    ^

    sketch_may12a:39:20: error: expected primary-expression before ‘.’ token

    Serial.print(tm.Day);

    ^

    sketch_may12a:41:20: error: expected primary-expression before ‘.’ token

    Serial.print(tm.Month);

    ^

    sketch_may12a:43:37: error: expected primary-expression before ‘.’ token

    Serial.print(tmYearToCalendar(tm.Year));

    ^

    sketch_may12a:43:18: error: ‘tmYearToCalendar’ was not declared in this scope

    Serial.print(tmYearToCalendar(tm.Year));

    ^~~~~~~~~~~~~~~~

    sketch_may12a:46:15: error: expected primary-expression before ‘.’ token

    horas = tm.Hour;

    ^

    sketch_may12a:47:17: error: expected primary-expression before ‘.’ token

    minutos = tm.Minute;

    ^

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino: At global scope:

    sketch_may12a:95:1: error: expected unqualified-id before numeric constant

    ۱

    ^

    sketch_may12a:197:18: error: redefinition of ‘int8_t Digitos []’

    int8_t Digitos[] = {0,1,2,3};

    ^

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino:11:10: note: ‘int8_t Digitos [4]’ previously defined here

    int8_t Digitos[] = {0,1,2,3};

    ^~~~~~~

    sketch_may12a:198:7: error: redefinition of ‘int horas’

    int horas;

    ^~~~~

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino:12:7: note: ‘int horas’ previously declared here

    int horas;

    ^~~~~

    sketch_may12a:199:7: error: redefinition of ‘int minutos’

    int minutos;

    ^~~~~~~

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino:13:7: note: ‘int minutos’ previously declared here

    int minutos;

    ^~~~~~~

    sketch_may12a:200:11: error: redefinition of ‘boolean alterna’

    boolean alterna;

    ^~~~~~~

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino:14:11: note: ‘boolean alterna’ previously declared here

    boolean alterna;

    ^~~~~~~

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino: In function ‘void setup()’:

    sketch_may12a:202:6: error: redefinition of ‘void setup()’

    void setup() {

    ^~~~~

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino:16:6: note: ‘void setup()’ previously defined here

    void setup() {

    ^~~~~

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino: In function ‘void loop()’:

    sketch_may12a:214:6: error: redefinition of ‘void loop()’

    void loop() {

    ^~~~

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino:28:6: note: ‘void loop()’ previously defined here

    void loop() {

    ^~~~

    sketch_may12a:215:1: error: ‘tmElements_t’ was not declared in this scope

    tmElements_t tm;

    ^~~~~~~~~~~~

    sketch_may12a:217:18: error: expected primary-expression before ‘)’ token

    if (RTC.read(tm)) {

    ^

    sketch_may12a:219:20: error: expected primary-expression before ‘.’ token

    print2digits(tm.Hour);

    ^

    sketch_may12a:221:20: error: expected primary-expression before ‘.’ token

    print2digits(tm.Minute);

    ^

    sketch_may12a:223:20: error: expected primary-expression before ‘.’ token

    print2digits(tm.Second);

    ^

    sketch_may12a:225:20: error: expected primary-expression before ‘.’ token

    Serial.print(tm.Day);

    ^

    sketch_may12a:227:20: error: expected primary-expression before ‘.’ token

    Serial.print(tm.Month);

    ^

    sketch_may12a:229:37: error: expected primary-expression before ‘.’ token

    Serial.print(tmYearToCalendar(tm.Year));

    ^

    sketch_may12a:229:18: error: ‘tmYearToCalendar’ was not declared in this scope

    Serial.print(tmYearToCalendar(tm.Year));

    ^~~~~~~~~~~~~~~~

    sketch_may12a:232:15: error: expected primary-expression before ‘.’ token

    horas = tm.Hour;

    ^

    sketch_may12a:233:17: error: expected primary-expression before ‘.’ token

    minutos = tm.Minute;

    ^

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino: In function ‘void print2digits(int)’:

    sketch_may12a:260:6: error: redefinition of ‘void print2digits(int)’

    void print2digits(int number) {

    ^~~~~~~~~~~~

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino:74:6: note: ‘void print2digits(int)’ previously defined here

    void print2digits(int number) {

    ^~~~~~~~~~~~

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino: In function ‘void CalculaDigitos(int, int)’:

    sketch_may12a:267:6: error: redefinition of ‘void CalculaDigitos(int, int)’

    void CalculaDigitos( int hor, int minu)

    ^~~~~~~~~~~~~~

    C:\Users\MOBTAK~1\AppData\Local\Temp\arduino_modified_sketch_277590\sketch_may12a.ino:81:6: note: ‘void CalculaDigitos(int, int)’ previously defined here

    void CalculaDigitos( int hor, int minu)

    ^~~~~~~~~~~~~~

    exit status 1

    ‘tmElements_t’ was not declared in this scope

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    • با سلام
      کتابخانه آپدیت شده است. پس از آپدیت کتابخانه از منو EXAMPLE اسم کتابخانه را پیدا و سپس یک نمونه برنامه از همین کتابخانه باز کنید. سپس تغییرات را با این کد مقایسه کنید.

  • با سلام
    من از این ماژول DS1307 استفاده کرده ام اما به ناگهان ساعت آن تبدیل به ۱۶:۱۶:۱۶ می شود
    تا به حال به این مشکل برخورد کرده اید و چطور می توانم آن را حل کنم؟

      • سلام ممنون از شما
        اما این طور رفع نشد چون این ماژول اگر به ۵ ولت وصل شود مدام باتری سکه ای را شارژ می کند و من چون مقاومت R6 را اتصال کوتاه کرده بودم آی سی ساعت را سوزاند
        برای رفع این مشکل اگر از باتری CR2032 استفاده می شود حتما مقاومت های R4,R5,R6 و دیود D1 را از مدار خارج کنید و دو سر مقاومت R6 را اتصال کوتاه کنید تا باتری شارژ نشود و آی سی نسوزد

        • با سلام
          کاربر گرامی از اینکه تجربه ی خود را با دیگر کاربران به اشتراک گذاشته اید، صمیمانه سپاسگزاریم.

  • سلام خسته نباشید
    چطور میشود بعد از برنامه نویسی و… بعم متصل و راه اندازی کرد سون سگمنت hw-069 و ماژول ساعت rtc12c
    ممنون از سایت خوبتون

  • سلام
    لطفا کد برنامه نویسی درست و بدون مشکل را بارگزاری کنید
    منم مشکل یکی از کاربران رادارم که راهنمایی فرمودید کتابخانه را آپدیت و مقابسه و… کارها را انجام دهند. من سواد این کارها را ندارم
    الان هم با این مشکل مواجهم
    ‘tmElements_t’ was not declared in this scope

    باتشکر

    • با سلام
      کاربر گرامی ضمن تشکر از شما در نظر داشته یاشید این آموزش مربوط به ۶ سال گذشته است و کتابخانه ها به مرور زمان توسعه داده می‌شوند.
      کدها سالم است اما باید تغییرات آپدیت را انجام دهید که پس از آپدیت کتابخانه IDE Arduino به شما نمایش خواهد داد.
      کد بررسی و اصلاح خواهد شد.

      • در ابتدا کتابخانه ی زیر را جست و جو و سپس آپدیت کنید.
        Grove-4-digit display by seedstudio
        سپس کتابخانه ساعت را نصب کنید.
        DS1307RTC
        سپس کتابخانه time by michael margolis را نصب کنید.
        ارورها برطرف شده است و میتوانید کد را اجرا کنید.