DS1302 + 1602 LCD Clock
In this project I'm not going to make a clock, I try to experiment DS1302 and 1602 LCD brought recently. I have followed other instructablers but cannot get an expected result, so I tried and tried until it done and publish my project here to share with all.
In my project I have only changed some wiring and software to make it work, so I will concern on the changes.
LCD and RTC Wiring Change
This is not much breakthrough in fact any wiring could be worked, but I've found one wire in question caused my LCD no display, so I correct it as follow.
/*LCD Display (1602)
1.VSS to Arduino GND
2.VCC to Arduino 5V
3.VEE to Arduino GND
4.RS to Arduino pin 10
5.R/W to Arduino pin 9
6.E to Arduino pin 8
11.DB4 to Arduino pin 7
12.DB5 to Arduino pin 6
13.DB6 to Arduino pin 5
14.DB7 to Arduino pin 4
15.LED+ to Arduino 5V
16.LED- to Arduino GND*/
/*DS1302 RTC
RST to Arduino 13
DAT to Arduino 12
CLK to Arduino 11*/
Software Change
There are nothing wrong in the software found in the web, what my changes are only adopted in my project.
Firstly you have to include the LCD
#include <LiquidCrystal.h>
Secondly amend the RTC and LCD initialization
DS1302 rtc(13,12,11);
LiquidCrystal lcd (10,9,8,7,6,5,4);
Thirdly format the day time string to be printout from LCD
char buf_1[16], buf_2[16];
snprintf(buf_1, sizeof(buf_1), "%s %04d-%02d-%02d", day.c_str(), t.yr, t.mon, t.date, day.c_str());
snprintf(buf_2, sizeof(buf_2), "%02d:%02d:%02d", t.hr, t.min, t.sec);
lcd.setCursor(1, 0);
lcd.print(buf_1);
lcd.setCursor(4, 1);
lcd.print(buf_2);
Finally You're Done
A clock may simply tells time, but the code inside have other opportunities to trigger some activities, for examples
day.c_str(),
t.yr,
t.mon,
t.date,
t.hr,
t.min,
t.sec;