loading
Based on my first Instructable.
Based on WWC SKETCH

Add Rtc(realtimeclock) to your Instructable .

Items
1 Arduino
1 Usb conector wire
1 RTC DS1307
1 Wires
1 Device to upload scetch.
1 time / DS1307RTC  libraries http://playground.arduino.cc/Code/time

Step 1:

conect rtc to arduino.

conect  SDA  to Arduino A4.
conect  SCL  to Arduino A5.
conect vcc to  +5v
conect gnd to gnd

Step 2: Conect Lcd

LCD to Arduino
1 GND
2 +
3 center of potentiometer
4 pin 12 Arduino.
5 GND
6 Pin 11 Arduino
11 Pin 5 Arduino
12 Pin 4 Arduino
13 Pin 3 Arduino
14 Pin 2 Arduino
15 +
16 Gnd

Step 3: The Set Rtc Sketch From Member WWC. Don't Use This Example Where U Change the Time.

the serial input didn 't work for me so i ad the time to the sketch.
 
dont use this one . only for EXAMPLE where u have to enter the time .

// This set of codes is allows input of data
void setTime() {
  Serial.print("Please enter the current year, 00-99. - ");
  year = 13;
  Serial.println(year);
  Serial.print("Please enter the current month, 1-12. - ");
  month = 9;
  Serial.println(months[month-1]);
  Serial.print("Please enter the current day of the month, 1-31. - ");
  monthday = 20;
  Serial.println(monthday);
  Serial.println("Please enter the current day of the week, 1-7.");
  Serial.print("1 Sun | 2 Mon | 3 Tues | 4 Weds | 5 Thu | 6 Fri | 7 Sat - ");
  weekday = 6;
  Serial.println(days[weekday-1]);
  Serial.print("Please enter the current hour in 24hr format, 0-23. - ");
  hour = 13;
  Serial.println(hour);
  Serial.print("Please enter the current minute, 0-59. - ");
  minute = 51;
  Serial.println(minute);
  second = 15;
  Serial.println("The data has been entered.");

Step 4: The Set Rtc Sketch From Member WWC. Take This.

you have to enter your time ,upload and then open serial and hit y and send.

//////////////////////////////////////////
// RTC data and time setter              //
//                                       //
// This sample program allows the user   //
// to set the date and time of an RTC    //
// using I2C.                            //
//                                       //
// Codes by:                             //
// eGizmo Mechatronix Central            //
// Taft, Manila, Philippines             //
// http://www.egizmo.com                 //
// April 15, 2013                        //
///////////////////////////////////////////

#include <Wire.h>
const int DS1307 = 0x68; // Address of DS1307 see data sheets
const char* days[] =
{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
const char* months[] =
{"January", "February", "March", "April", "May", "June", "July", "August","September", "October", "November", "December"};

// Initializes all values:
byte second = 0;
byte minute = 0;
byte hour = 0;
byte weekday = 0;
byte monthday = 0;
byte month = 0;
byte year = 0;

void setup() {
  Wire.begin();
  Serial.begin(9600);
  delay(2000); // This delay allows the MCU to read the current date and time.

  Serial.print("The current date and time is: ");
  printTime();
  Serial.println("Please change to newline ending the settings on the lower right of the Serial Monitor");
  Serial.println("Would you like to set the date and time now? Y/N");

  while (!Serial.available()) delay(10);
  if (Serial.read() == 'y' || Serial.read() == 'Y')

  // This set of functions allows the user to change the date and time
  {
    Serial.read();
    setTime();
    Serial.print("The current date and time is now: ");
    printTime();
  }


  Serial.println("Thank you.");
}

// Continuous function for converting bytes to decimals and vice versa
void loop() {
}
byte decToBcd(byte val) {
  return ((val/10*16) + (val%10));
}
byte bcdToDec(byte val) {
  return ((val/16*10) + (val%16));
}


// This set of codes is allows input of data
void setTime() {
  Serial.print("Please enter the current year, 00-99. - ");
  year = 13;
  Serial.println(year);
  Serial.print("Please enter the current month, 1-12. - ");
  month = 9;
  Serial.println(months[month-1]);
  Serial.print("Please enter the current day of the month, 1-31. - ");
  monthday = 20;
  Serial.println(monthday);
  Serial.println("Please enter the current day of the week, 1-7.");
  Serial.print("1 Sun | 2 Mon | 3 Tues | 4 Weds | 5 Thu | 6 Fri | 7 Sat - ");
  weekday = 6;
  Serial.println(days[weekday-1]);
  Serial.print("Please enter the current hour in 24hr format, 0-23. - ");
  hour = 13;
  Serial.println(hour);
  Serial.print("Please enter the current minute, 0-59. - ");
  minute = 51;
  Serial.println(minute);
  second = 15;
  Serial.println("The data has been entered.");

  // The following codes transmits the data to the RTC
  Wire.beginTransmission(DS1307);
  Wire.write(byte(0));
  Wire.write(decToBcd(second));
  Wire.write(decToBcd(minute));
  Wire.write(decToBcd(hour));
  Wire.write(decToBcd(weekday));
  Wire.write(decToBcd(monthday));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));
  Wire.write(byte(0));
  Wire.endTransmission();
  // Ends transmission of data
}


byte readByte() {
  while (!Serial.available()) delay(10);
  byte reading = 0;
  byte incomingByte = Serial.read();
  while (incomingByte != '\n') {
    if (incomingByte >= '0' && incomingByte <= '9')
      reading = reading * 10 + (incomingByte - '0');
    else;
    incomingByte = Serial.read();
  }
  Serial.flush();
  return reading;
}


void printTime() {
  char buffer[3];
  const char* AMPM = 0;
  readTime();
  Serial.print(days[weekday-1]);
  Serial.print(" ");
  Serial.print(months[month-1]);
  Serial.print(" ");
  Serial.print(monthday);
  Serial.print(", 20");
  Serial.print(year);
  Serial.print(" ");
  if (hour > 12) {
    hour -= 12;
    AMPM = " PM";
  }
  else AMPM = " AM";
  Serial.print(hour);
  Serial.print(":");
  sprintf(buffer, "%02d", minute);
  Serial.print(buffer);
  Serial.println(AMPM);
}


void readTime() {
  Wire.beginTransmission(DS1307);
  Wire.write(byte(0));
  Wire.endTransmission();
  Wire.requestFrom(DS1307, 7);
  second = bcdToDec(Wire.read());
  minute = bcdToDec(Wire.read());
  hour = bcdToDec(Wire.read());
  weekday = bcdToDec(Wire.read());
  monthday = bcdToDec(Wire.read());
  month = bcdToDec(Wire.read());
  year = bcdToDec(Wire.read());
}

Step 5: Now Upload This to See the Time on Your Lcd.

/*
* TimeRTC.pde
* example code illustrating Time library with Real Time Clock.
*
*/

#include <Time.h> 
#include <Wire.h> 
#include <DS1307RTC.h>  // a basic DS1307 library that returns time as a time_t
#include <LiquidCrystal.h> 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()  {
  lcd.begin(16, 2);
 
 

  Serial.begin(9600);
  setSyncProvider(RTC.get);   // the function to get the time from the RTC
  if(timeStatus()!= timeSet)
     Serial.println("Unable to sync with the RTC");
  else
     Serial.println("RTC has set the system time");
    
}

void loop()
{
   digitalClockDisplay(); 
   delay(1000);
}

void digitalClockDisplay(){
  // digital clock display of the time
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.print(year());
  Serial.println();
 
lcd.setCursor(2, 0);                                            // Set LCD cursor position (column, row)
lcd.print(hour());
lcd.print(":");
lcd.print (minute());
lcd.print(" ");
lcd.print(second());
lcd.print(" ");
lcd.print("Uhr");
lcd.setCursor(3, 1);                                           // Set LCD cursor position (column,row) 
lcd.print(day());
lcd.print(".");
lcd.print(month());
lcd.print(".");
lcd.print(year());

// Print text to LCD
                                     // Delay to read text
                               // Clear the display

}

void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon and leading 0
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}
<p>nothing is showing om my lcd screen</p>
<p>Hello When I try to upload the sketch it gives the error</p><p>'setSyncProvider' was not declared in this scope</p><p>Can you please help</p>
Very nice! What would the code be if I wanted to reduce lcd wiring to 4 wires with an I2C?
? don t know.
<p>cool</p>
<p>Amazing</p>
<p>good work</p>
<p>What happen when RTC module ran out of battery? Do I have to connect the Arduino and reload the sketch?</p>
<p>how to set alarm using same library on rtc arduino??or timed event? </p><p>plz helppp</p>
<p>Rtc again shows garbage values..i followed all steps..plz help.......</p><p>The current date and time is: 165, 20165 153:165 PM</p><p>Please change to newline ending the settings on the lower right of the Serial Monitor</p><p>Would you like to set the date and time now? Y/N</p><p>Please enter the current year, 00-99. - 14</p><p>Please enter the current month, 1-12. - September</p><p>Please enter the current day of the month, 1-31. - 17</p><p>Please enter the current day of the week, 1-7.</p><p>1 Sun | 2 Mon | 3 Tues | 4 Weds | 5 Thu | 6 Fri | 7 Sat - Wednesday</p><p>Please enter the current hour in 24hr format, 0-23. - 13</p><p>Please enter the current minute, 0-59. - 13</p><p>The data has been entered.</p><p>The current date and time is now: 165, 20165 153:165 PM</p><p>Thank you.</p>
<p>@ nikhilbadhe11</p><p>conect it to 5 volt not to 3volt,</p><p>pherhaps it is broken? check your soldering , and take a look at this <a href="https://www.instructables.com/id/Setting-the-DS1307-Real-Time-Clock-using-the-Seria/" rel="nofollow">https://www.instructables.com/id/Setting-the-DS1307...</a> they have the same trouble.</p>
<p>my rtc shows this garbage value time . 165/165/165 45:165:165 </p><p>after setting it also shows same wrong time ..plz help me..</p>
<p>dear ash124.</p><p>step 3 is only an exemple there&acute;s a bug in it. iwalked around it by entering the time at the big letters year,month,monthday.weekday,hour,minute direct in the skript. than i uploadet it. you have to take step 4 enter your time like shown in step 3 and upload it.</p>
<p>Hi!</p><p>I am facing the same problem as stuartsjg faced ...i-e when i pressed &quot;Y&quot; i got the message of thank you in the serial monitor ,and during this action i had disabled the newline ,still i got the same problem it looks like that the program is not jumping to the setTime() loop... here is the picture of serial monitor..plz help me out in this</p>
<p>Nice tutorial. Very helpful!</p><p>They sell the DS1307 on this webstore: <a href="http://voltatek.com/en/sensors/34-i2c-rtc-ds1307-at24c32-real-time-clock-module-raspberry-pi-arduino.html" rel="nofollow">http://voltatek.com/en/sensors/34-i2c-rtc-ds1307-a...</a></p>
thx they sell it to http://www.amazon.de/s/?ie=UTF8&amp;keywords=rtc+ds1307&amp;tag=googhydr08-21&amp;index=aps&amp;hvadid=28697841386&amp;hvpos=1t1&amp;hvexid=&amp;hvnetw=g&amp;hvrand=17162271407903030750&amp;hvpone=&amp;hvptwo=&amp;hvqmt=b&amp;hvdev=t&amp;ref=pd_sl_4rfh8wen50_b

About This Instructable

90,057views

74favorites

License:

More by citin:Clock ,RTC DS1307  SET AND SHOW THE TIME ON YOUR LCD. Arduino LCD Thermometer / temperature control with TMP36GZ Temp sensor added 2 chanel relay, added RTC ds1307 , added a case.based on WWC Guide . 
Add instructable to: