به نام خدا
ساعت دیجیتال همراه با هشدار با آردوینو
در این پروژه می خواهیم یک ساعت و تاریخ دیجیتال با قابلیت زنگ هشدار با استفاده برد آردوینو طراحی کنیم .
ما در این پروژه با استفاده از یک آی سی RTC به نام DS1307 که پروتوکل ارتباطی آن I2C هست ، ساعت و تاریخ را ایجاد کرده ایم . این ساعت با قطع منبع برق نیز در حال کار است . زمان هشداری که تنظیم می کنید در حافظه EEPROM آردوینو ذخیره می شود . همان طور که در تصویر می بینید ، ساعت و تاریخ در یک LCD کاراکتری نمایش داده می شود .
پروتکل I2C یک روش ارتباط است که با استفاده از دو سیم ، می تواند دو وسیله را به هم ارتباط دهد به همین خاطر نام دیگر این پروتکل ، Two-Wire می باشد . از این پروتکل می توان تا ۱۲۷ دستگاه را به یک دستگاه متصل کرد . بسیاری از دستگاه ها فرکانس کاری I2C آن ها ۱۰۰ کیلو هرتز است .
لیست قطعات :
- ال سی دی ۱۶ * ۲
- رگولاتور ۷۸۰۵
- مقاومت ۱۰ کیلو اهم دو عدد
- مقاومت یک کیلو اهم دو عدد
- میکروسوئیچ سه عدد
- کریستال ساعت ( فرکانس ۳۲۷۶۸ هرتز )
- برد آردوینو پرو مینی
- بازر
- ترانزیستور bc547
- آی سی ds1307
- باتری قلمی ۱٫۵ ولت دو عدد
شماتیک مدار :
برای دانلود کد های برنامه بر روی لینک زیر کلیک کنید .
دانلود فایل
برای دیدن فیلم پروژه ساعت دیجیتال ، در لینک زیر کلیک کنید .
دانلود فیلم
درود
سپاس از زحماتتون.ترتیب پایه ها در اردوینو uno هم به همین صورت هست؟
سلام..خیلی ممنون...
بله.به همین صورت هست.
ظاهرا برنامه مشکل داره.موقع کامپایل ارور میده
پروژه رو از روی صفحه سایت کپی نکنید ، از لینکی که در پایین صفحه داده شده دانلود کنید .
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.
متن اروری که میده
مشکل پیدا شد لطفا تصحیح کنین.در تابع beep { آخر فراموش شده گذاشته بشه
سلام
ایا امکانش هست برای ساخت ساعت اردوینو به سون سگمت بزرگ وصل بشه
سلام...
بله امکانش هست منتهی با ترانزیستور...چون اون ال ای دی های سون سگمنت بزرگ ، جریان زیاد میکشن...
سلام
آیا امکانش هست pcbمدار و لیست قطعات را قرار دهید
سلام
لیست قطعات که از روی مدار مشخصه ولی چشم توی نوشته ها اضاف میکنم...
واسه پی سی بی هم که شماتیک مدار مشخصه خودتون راحت میتونید طراحیش کنید.
تازه ارور هم میده
کد ها رو کپی نکنید ، از لینکی که داده شده دانلود کنید .
لینکی نمیبینم
سلام
مشکل لینک ها حل شد.
با سلام و عرض ادب
این کد یه اروری میده”
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 رو هم برسی کردم ام مشکل هل نشد
ممنون از سایت خوبتون
سلام . برنامه ها رو از صفحه سایت نباید دانلود می کردید باید از لینکی که داده شده دانلود کنید .
خیلی ممنون مشکل هل شد
یاید کد هاش اینجوری باشه/* ----- 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
سلام .
برنامه ها رو از صفحه سایت نباید دانلود می کردید باید از لینکی که داده شده دانلود کنید .
ممنون از پیگیریتون و کمکتون .
سلام
میشه به کل این پؤوزه یک سنسور دما و یک سنسور مسافت سنج هم اظافی کرد اگه میشه ممنون میشم تو فایل پروتعوئس نشونم بدید تو برنامه هم کدش کجا میشه اضافی کرد؟؟؟
سلام
بله میشه ، با من تماس بگیرید