// ds1302 library can be found here : http://www.henningkarlsen.com/electronics
#include <LiquidCrystal.h>
#include <DS1302.h>
// Init the DS1302 (ce, data, clock);
DS1302 rtc(8, 9, 10);
Time t;
// Init the LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
// Used only in the beginning, to define day of week, time and date
rtc.setDOW(MONDAY); // Set Day-of-Week to FRIDAY
rtc.setTime(13, 10, 00); // Set the time to 12:00:00 (24hr format)
rtc.setDate(9, 6, 2014); // Set the date to August 6th, 2010
pinMode(7, OUTPUT); //Buzzer
pinMode(A0, OUTPUT); //LED
// Set the clock to run-mode, and disable the write protection
rtc.halt(false);
rtc.writeProtect(false);
// Setup LCD to 16x2 characters
lcd.begin(16, 2);
}
void loop()
{
// Display time centered on the upper line
lcd.setCursor(4, 0);
lcd.print(rtc.getTimeStr());
// Display abbreviated Day-of-Week in the lower left corner
lcd.setCursor(0, 1);
lcd.print(rtc.getDOWStr(FORMAT_SHORT));
// Display date in the lower right corner
lcd.setCursor(6, 1);
lcd.print(rtc.getDateStr());
do
{
t = rtc.getTime();
digitalWrite(A0, HIGH); // turn on LED
digitalWrite(7, HIGH); // turn on alarm
lcd.setCursor(4,0);
lcd.print("RIVOTRIL");
}
while ((t.hour == 8) && (t.min == 02) && (t.sec == 00));
digitalWrite(A0, LOW); // turn off LED
digitalWrite(7, LOW); // turn off alarm
lcd.setCursor(4,0);
lcd.print(rtc.getTimeStr());
lcd.setCursor(12,0);
lcd.print(" ");
do
{
t = rtc.getTime();
digitalWrite(A1, HIGH); // turn on LED
digitalWrite(7, HIGH); // turn on alarm
lcd.setCursor(4,0);
lcd.print("PHARMATON");
}
while ((t.hour == 8) && (t.min == 04) && (t.sec == 00));
digitalWrite(A1, LOW); // turn off LED
digitalWrite(7, LOW); // turn off alarm
lcd.setCursor(4,0);
lcd.print(rtc.getTimeStr());
lcd.setCursor(12,0);
lcd.print(" ");
do
{
t = rtc.getTime();
digitalWrite(A2, HIGH); // turn on LED
digitalWrite(7, HIGH); // turn on alarm
lcd.setCursor(4,0);
lcd.print("REDOXON ");
}
while ((t.hour == 8) && (t.min == 7));
digitalWrite(A2, LOW); // turn off LED
digitalWrite(7, LOW); // turn off alarm
lcd.setCursor(4,0);
lcd.print(rtc.getTimeStr());
do
{
t = rtc.getTime();
digitalWrite(A3, HIGH); // turn on LED
digitalWrite(7, HIGH); // turn on alarm
lcd.setCursor(4,0);
lcd.print("REDOXON ");
}
while ((t.hour == 8) && (t.min == 10));
digitalWrite(A3, LOW); // turn off LED
digitalWrite(7, LOW); // turn off alarm
lcd.setCursor(4,0);
lcd.print(rtc.getTimeStr());
delay (1000);
}
This is the code, an alarm and LED turns on at an especific time.
Here is an example of what happened, the display shows:
09:36:14, 09:36:15, 09:36:16, 09:36: 18, 09:36:19, 09:36:20....
09:41:39, 09:41:40, 09:41:42, 09:42:43, 09:41:44, 09:41:45
At these underlined moments, it jumps two seconds with a time of one second, and there's no sequency, it's aleatory.