Sunteți pe pagina 1din 17

12/15/2015 Arduino Based Digital Clock with Alarm

(/)

Home (/) /  Arduino Based Digital Clock with Alarm

Arduino Based Digital Clock with Alarm (/microcontroller-projects/arduino-alarm-


clock)
By Saddam 1 Comment (/microcontroller-projects/arduino-alarm-clock/#comments)

Arduino Based Digital Clock with Alarm

This Arduino based Real time clock is a digital clock to display real time using a RTC IC DS1307 which works on I2C protocol. Real
time clock means it runs even after power failure. When power is reconnected, it displays the real time inrespective to the time and
duration it was in off state. In this project we have used a 16x2 LCD module to display the time in - (hour, minute, seconds, date,
month and year) format. An  Alarm option is also added and we can set up the alarm time. Once alarm time it saved in internal
EEPROM of arduino, it remains saved even after reset or electricity failure. Real time clocks are commonly used in our computers,
houses, offices and electronics device for keeping them updated with real time.

I2C protocol is a method to connect two or more devices using two wires to a single system, and so this protocol is also called as
two wire protocol. It can be used to communicate 127 devices to a single device or processor. Most of I2C devices run on100Khz
frequency.

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 1/17
12/15/2015 Arduino Based Digital Clock with Alarm

Steps for data writing master to slave (slave receiving mode)

1. Sends START condition to slave.


2. Sends slave address to slave.
3. Send write bit (0) to slave.
4. Received ACK bit from slave
5. Sends words address to slave.
6. Received ACK bit from slave
7. Sends data to slave.
8. Received ACK bit from slave.
9. And last sends STOP condition to slave.

Steps for data reading from slave to master (slave transmitting mode)

1. Sends START condition to slave.


2. Sends slave address to slave.
3. Send read bit (1) to slave.
4. Received ACK bit from slave
5. Received data from slave
6. Received ACK bit from slave.
7. Sends  STOP condition to slave.

Circuit Diagram and Description

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 2/17
12/15/2015 Arduino Based Digital Clock with Alarm

(/fullimage?

i=circuitdiagram_mic/Arduino-Alarm-Clock-Circuit.gif)

In this Arduino based digital clock circuit, we have used three major components which are IC DS1307, Arduino Pro Mini Board and
16x2 LCD module. 

Here arduino is used for reading time from ds1307 and display it on 16x2 LCD. DS1307 sends time/date using 2 lines to arduino. A
buzzer is also used for alarm indication, which beeps when alarm is activated. A block diagram is shown below to understand the
working of this Real Time Clock.

As you can see in the circuit diagram, DS1307 chip pin SDA and SCL are connected to arduino pins SDA and SCL with pull up resistor
that holds default value HIGH at data and clock lines. 32.768KHz crystal oscillator is connected with DS1307chip for generating
exact 1 second delay, and a 3 volt battery is also connected to pin 3rd (BAT) of DS1307 which keeps time running after electricity
failure.16x2 LCD is connected with arduino in 4-bit mode. Control pin RS, RW and En are directly connected to arduino pin 2, GND and
3. And data pin D0-D7 is connected to 4, 5, 6, 7 of arduino. A buzzer is connected with arduino pin number 13 through a NPN BC547
transistor having a 1 k resistor at its base.

Three buttons namely set, INC and Next are used for setting alarm to pin 12, 11 and 10 of arduino in active low mode. When we
press set, alarm set mode activates and now we need to set alarm by using INC button and Next button is used for moving to digit.
The complete breadboard setup of this real time clock with alarm is shown in below image. You can also check a detailed tutorial on
digital alarm clock with AVR microcontroller (http://circuitdigest.com/microcontroller-projects/digital-alarm-clock-using-avr).

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 3/17
12/15/2015 Arduino Based Digital Clock with Alarm

Program Description
To program for this real time clock, we have used some libraries for extracting time/date from DS1307 and for displaying on LCD,
which are given below:

And initialization of RTC, LCD and input output are performed in setup loop.

Rest of things like reading time, setting alarm is performed in void loop section.

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 4/17
12/15/2015 Arduino Based Digital Clock with Alarm

Code: 
/* ----- C Program for Arduino based Alarm Clock ---- */

#include <Wire.h>
#include<EEPROM.h>
#include <RTClib.h>
#include <LiquidCrystal.h>

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()
{

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 5/17
12/15/2015 Arduino Based Digital Clock with Alarm
   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);

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 6/17
12/15/2015 Arduino Based Digital Clock with Alarm
     }
     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();

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 7/17
12/15/2015 Arduino Based Digital Clock with Alarm
   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);
}

Video: 

Arduino Based Digital Clock with Alarm

Add new comment (/microcontroller-projects/arduino-alarm-clock#comment-form)

Comments (1)

reply (/comment/reply/73/24)
dimas
Thanks it's usefull
Sep 04, 2015

Leave a comment
FEATURED PROJECTS AND CIRCUITS

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 8/17
12/15/2015 Arduino Based Digital Clock with Alarm

Your name *

E-mail *
The content of this field is kept private and will not be shown publicly.

Subject
(/microcontroller-projects/arduino- (/electronic-circuits/emergency- (/electronic-circuits/simple-piano- (/electronic-circuits/ir-securit
8x8-led-matrix)
Comment * light-circuit) circuit) alarm-circuit)
8x8 LED Matrix using Arduino Emergency Light (/electronic- DIY Piano (/electronic- IR Based Security Alarm
View all Featured Projects (/featured-electronics-projects-and-circuits)

No HTML tags allowed. More information about text formats (/filter/tips)


Web page addresses and e-mail addresses turn into links automatically.
Lines and paragraphs break automatically.

Save Preview

RELATED CONTENT

Servo Position Control with Weight (Force Sensor) (/microcontroller-projects/arduino-servo-motor-control-by-force-sensor)


How to establish UART communication between ATmega8 and Arduino Uno? (/microcontroller-projects/uart-communication-between-atmega8-
and-arduino-uno)
Arduino Based Tone Generator (/microcontroller-projects/arduino-tone-generator)
Variable Power Supply By Arduino Uno (/microcontroller-projects/arduino-variable-power-supply-circuit)
Servo Motor Control by Flex Sensor (/microcontroller-projects/servo-motor-control-by-flex-sensor-using-arduino)

LATEST POSTS

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 9/17
12/15/2015 Arduino Based Digital Clock with Alarm

(/electronic-circuits/burglar-alarm)

Burglar Alarm Circuit (/electronic-circuits/burglar-alarm)

(/microcontroller-projects/arduino-servo-motor-control-by-force-sensor)

Servo Position Control with Weight (Force Sensor) (/microcontroller-projects/arduino-servo-motor-control-by-force-


sensor)

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 10/17
12/15/2015 Arduino Based Digital Clock with Alarm

(/microcontroller-projects/8x8-led-matrix-with-avr-atmega8)

8x8 LED Matrix Interfacing with AVR Microcontroller (/microcontroller-projects/8x8-led-matrix-with-avr-atmega8)

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 11/17
12/15/2015 Arduino Based Digital Clock with Alarm

(/electronic-circuits/lm3914-voltmeter-circuit)

LM3914 Voltmeter Circuit (/electronic-circuits/lm3914-voltmeter-circuit)

(/microcontroller-projects/uart-communication-between-atmega8-and-arduino-uno)

How to establish UART communication between ATmega8 and Arduino Uno? (/microcontroller-projects/uart-
communication-between-atmega8-and-arduino-uno)

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 12/17
12/15/2015 Arduino Based Digital Clock with Alarm

(/node/add/community-projects)
Add Project

USER LOGIN

E-mail or username *

Password *

Log in Create new account (/user/register) Request new password (/user/password)

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 13/17
12/15/2015 Arduino Based Digital Clock with Alarm

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 14/17
12/15/2015 Arduino Based Digital Clock with Alarm

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 15/17
12/15/2015 Arduino Based Digital Clock with Alarm

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 16/17
12/15/2015 Arduino Based Digital Clock with Alarm

SIGN UP FOR LATEST NEWS

Subscribe

Popular Topics: Robotics Projects (/robotics-projects) | Arduino Uno Projects (/arduino-uno-projects) |  Electronics Projects (/electronics-projects) | 555
Timer Circuits (/555-timer-circuits) | ATmega32 Projects (/atmega32-projects) | ATmega8 Projects (/atmega8-projects) | Audio Circuits (/audio-circuits) |
4017 Circuits (/4017-circuits)

Copyright © 2015 Circuit Digest (http://circuitdigest.com/). All rights reserved


Privacy policy (http://circuitdigest.com/privacy-policy) |  Disclaimer (http://circuitdigest.com/disclaimer) | Contact Us
(http://circuitdigest.com/contact) | Add Project (http://circuitdigest.com/node/add/community-projects) | Advertise
(http://circuitdigest.com/advertise)

http://circuitdigest.com/microcontroller­projects/arduino­alarm­clock 17/17

S-ar putea să vă placă și