رباتیک و هوافضا

ساعت دیجیتال همراه با هشدار با آردوینو

به نام خدا

ساعت دیجیتال همراه با هشدار با آردوینو

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

 

Arduino-Digital-Clock

 

ما در این پروژه با استفاده از یک آی سی RTC به نام DS1307 که پروتوکل ارتباطی آن I2C هست ، ساعت و تاریخ را ایجاد کرده ایم . این ساعت با قطع منبع برق نیز در حال کار است . زمان هشداری که تنظیم می کنید در حافظه EEPROM آردوینو ذخیره می شود . همان طور که در تصویر می بینید ، ساعت و تاریخ در یک LCD کاراکتری نمایش داده می شود .

پروتکل I2C یک روش ارتباط است که با استفاده از دو سیم ، می تواند دو وسیله را به هم ارتباط دهد به همین خاطر نام دیگر این پروتکل ، Two-Wire می باشد . از این پروتکل می توان تا ۱۲۷ دستگاه را به یک دستگاه متصل کرد . بسیاری از دستگاه ها فرکانس کاری I2C آن ها ۱۰۰ کیلو هرتز است .

بیشتر بخوانید...  راه اندازی سنسور فشار ( ارتفاع سنج) BMP180

لیست قطعات :

  • ال سی دی ۱۶ * ۲
  • رگولاتور ۷۸۰۵
  • مقاومت ۱۰ کیلو اهم دو عدد
  • مقاومت یک کیلو اهم دو عدد
  • میکروسوئیچ سه عدد
  • کریستال ساعت ( فرکانس ۳۲۷۶۸ هرتز )
  • برد آردوینو پرو مینی
  • بازر
  • ترانزیستور bc547
  • آی سی ds1307
  • باتری قلمی ۱٫۵ ولت دو عدد

شماتیک مدار :

Arduino-Alarm-Clock-Circuit

 

Arduino-Clock-Block-Diagram

 

Arduino-Digital-Clock-Alarm

برای دانلود کد های برنامه بر روی لینک زیر کلیک کنید .

 

دانلود فایل

 

برای دیدن فیلم پروژه ساعت دیجیتال ، در لینک زیر کلیک کنید .

 

دانلود فیلم

 

دیدگاه‌ها (20)

پاسخ دادن به Admin لغو پاسخ

*
*

    محسن مهمان شهریور 13, 1395 پاسخ

    درود
    سپاس از زحماتتون.ترتیب پایه ها در اردوینو uno هم به همین صورت هست؟

      Admin مدیر کل شهریور 14, 1395 پاسخ

      سلام..خیلی ممنون...
      بله.به همین صورت هست.

    محسن مهمان شهریور 14, 1395 پاسخ

    ظاهرا برنامه مشکل داره.موقع کامپایل ارور میده

      Admin مدیر کل شهریور 14, 1395 پاسخ

      پروژه رو از روی صفحه سایت کپی نکنید ، از لینکی که در پایین صفحه داده شده دانلود کنید .

    محسن مهمان شهریور 15, 1395 پاسخ

    Arduino: 1.6.11 (Windows 8), Board: "Arduino/Genuino Uno"

    C:\Users\User\Documents\Arduino\sketch_sep05b\sketch_sep05b.ino: In function 'void match()':

    sketch_sep05b:170: error: 'beep' was not declared in this scope

    beep();

    ^

    sketch_sep05b:187: error: a function-definition is not allowed here before '{' token

    {

    ^

    sketch_sep05b:192: error: expected '}' at end of input

    }

    ^

    exit status 1
    'beep' was not declared in this scope

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

    متن اروری که میده

    محسن مهمان شهریور 20, 1395 پاسخ

    مشکل پیدا شد لطفا تصحیح کنین.در تابع beep { آخر فراموش شده گذاشته بشه

    فرزاد مهمان آبان 13, 1395 پاسخ

    سلام
    ایا امکانش هست برای ساخت ساعت اردوینو به سون سگمت بزرگ وصل بشه

      Admin مدیر کل آبان 27, 1395 پاسخ

      سلام...
      بله امکانش هست منتهی با ترانزیستور...چون اون ال ای دی های سون سگمنت بزرگ ، جریان زیاد میکشن...

    mahdi مهمان آذر 22, 1395 پاسخ

    سلام
    آیا امکانش هست pcbمدار و لیست قطعات را قرار دهید

      Admin مدیر کل دی 2, 1395 پاسخ

      سلام
      لیست قطعات که از روی مدار مشخصه ولی چشم توی نوشته ها اضاف میکنم...
      واسه پی سی بی هم که شماتیک مدار مشخصه خودتون راحت میتونید طراحیش کنید.

    mahdi مهمان آذر 22, 1395 پاسخ

    تازه ارور هم میده

      Admin مدیر کل فروردین 11, 1396 پاسخ

      کد ها رو کپی نکنید ، از لینکی که داده شده دانلود کنید .

    امیر مهمان مهر 7, 1396 پاسخ

    لینکی نمیبینم

      Admin مدیر کل مهر 13, 1396 پاسخ

      سلام
      مشکل لینک ها حل شد.

    یزدان مهمان مهر 27, 1396 پاسخ

    با سلام و عرض ادب
    این کد یه اروری میده”
    Arduino: 1.8.1 (Windows 10), Board: "Arduino/Genuino Uno"

    E:\yyy\saat-ba-1307-va-arduino-1\source\rtc\rtc.ino: In function 'void match()':

    rtc:170: error: 'beep' was not declared in this scope

    beep();

    ^

    rtc:186: error: a function-definition is not allowed here before '{' token

    void beep() {

    ^

    rtc:191: error: expected '}' at end of input

    }

    ^

    Multiple libraries were found for "RTClib.h"
    Used: C:\Users\yazdan\Documents\Arduino\libraries\RTClib
    Not used: C:\Users\yazdan\Documents\Arduino\libraries\RTCLib_by_NeiroN
    Multiple libraries were found for "LiquidCrystal.h"
    Used: C:\Users\yazdan\Documents\Arduino\libraries\LiquidCrystal
    Not used: E:\Arduino\libraries\LiquidCrystal
    exit status 1
    'beep' was not declared in this scope

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

    من تابعbeep رو هم برسی کردم ام مشکل هل نشد
    ممنون از سایت خوبتون

      Admin مدیر کل آبان 3, 1396 پاسخ

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

    یزدان مهمان مهر 27, 1396 پاسخ

    خیلی ممنون مشکل هل شد

    یاید کد هاش اینجوری باشه/* ----- C Program for Arduino based Alarm Clock ---- */

    #include
    #include
    #include
    #include

    LiquidCrystal lcd(3, 2, 4, 5, 6, 7);
    RTC_DS1307 RTC;
    int temp,inc,hours1,minut,add=11;

    int next=10;
    int INC=11;
    int set_mad=12;

    #define buzzer 13

    int HOUR,MINUT,SECOND;

    void setup()
    {
    Wire.begin();
    RTC.begin();
    lcd.begin(16,2);
    pinMode(INC, INPUT);
    pinMode(next, INPUT);
    pinMode(set_mad, INPUT);
    pinMode(buzzer, OUTPUT);
    digitalWrite(next, HIGH);
    digitalWrite(set_mad, HIGH);
    digitalWrite(INC, HIGH);

    lcd.setCursor(0,0);
    lcd.print("Real Time Clock");
    lcd.setCursor(0,1);
    lcd.print("Circuit Digest ");
    delay(2000);

    if(!RTC.isrunning())
    {
    RTC.adjust(DateTime(__DATE__,__TIME__));
    }
    }

    void loop()
    {
    int temp=0,val=1,temp4;
    DateTime now = RTC.now();
    if(digitalRead(set_mad) == 0) //set Alarm time
    {
    lcd.setCursor(0,0);
    lcd.print(" Set Alarm ");
    delay(2000);
    defualt();
    time();
    delay(1000);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" Alarm time ");
    lcd.setCursor(0,1);
    lcd.print(" has been set ");
    delay(2000);
    }
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Time:");
    lcd.setCursor(6,0);
    lcd.print(HOUR=now.hour(),DEC);
    lcd.print(":");
    lcd.print(MINUT=now.minute(),DEC);
    lcd.print(":");
    lcd.print(SECOND=now.second(),DEC);
    lcd.setCursor(0,1);
    lcd.print("Date: ");
    lcd.print(now.day(),DEC);
    lcd.print("/");
    lcd.print(now.month(),DEC);
    lcd.print("/");
    lcd.print(now.year(),DEC);
    match();
    delay(200);
    }

    void defualt()
    {
    lcd.setCursor(0,1);
    lcd.print(HOUR);
    lcd.print(":");
    lcd.print(MINUT);
    lcd.print(":");
    lcd.print(SECOND);
    }

    /*Function to set alarm time and feed time into Internal eeprom*/

    void time()
    {
    int temp=1,minuts=0,hours=0,seconds=0;
    while(temp==1)
    {
    if(digitalRead(INC)==0)
    {
    HOUR++;
    if(HOUR==24)
    {
    HOUR=0;
    }
    while(digitalRead(INC)==0);
    }
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Set Alarm Time ");
    //lcd.print(x);
    lcd.setCursor(0,1);
    lcd.print(HOUR);
    lcd.print(":");
    lcd.print(MINUT);
    lcd.print(":");
    lcd.print(SECOND);
    delay(100);
    if(digitalRead(next)==0)
    {
    hours1=HOUR;
    EEPROM.write(add++,hours1);
    temp=2;
    while(digitalRead(next)==0);
    }
    }

    while(temp==2)
    {
    if(digitalRead(INC)==0)
    {
    MINUT++;
    if(MINUT==60)
    {MINUT=0;}
    while(digitalRead(INC)==0);
    }
    // lcd.clear();
    lcd.setCursor(0,1);
    lcd.print(HOUR);
    lcd.print(":");
    lcd.print(MINUT);
    lcd.print(":");
    lcd.print(SECOND);
    delay(100);
    if(digitalRead(next)==0)
    {
    minut=MINUT;
    EEPROM.write(add++, minut);
    temp=0;
    while(digitalRead(next)==0);
    }
    }
    delay(1000);
    }

    /* Function to chack medication time */

    void match()
    {
    int tem[17];
    for(int i=11;i<17;i++)
    {
    tem[i]=EEPROM.read(i);
    }
    if(HOUR == tem[11] && MINUT == tem[12])

    beep();
    beep();
    beep();
    beep();
    lcd.clear();
    lcd.print("Wake Up........");
    lcd.setCursor(0,1);
    lcd.print("Wake Up.......");
    beep();
    beep();
    beep();
    beep();
    }

    /* function to buzzer indication */

    void beep()
    {
    digitalWrite(buzzer,HIGH);
    delay(500);
    digitalWrite(buzzer, LOW);
    delay(500);
    }

    اگه یکم دقت کنین در تابع beep میتونین فرقشو پیدا کنید.

    (((((با تشکر از سایت)))))
    avatrobo

      Admin مدیر کل آبان 3, 1396 پاسخ

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

    محمد مهمان آبان 24, 1396 پاسخ

    سلام
    میشه به کل این پؤوزه یک سنسور دما و یک سنسور مسافت سنج هم اظافی کرد اگه میشه ممنون میشم تو فایل پروتعوئس نشونم بدید تو برنامه هم کدش کجا میشه اضافی کرد؟؟؟

      Admin مدیر کل آذر 6, 1396 پاسخ

      سلام
      بله میشه ، با من تماس بگیرید