// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include "RTClib.h"
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h> // for Display
#include <Adafruit_SSD1306.h> // for display
#include <AccelStepper.h>
AccelStepper motorA(AccelStepper::DRIVER, 8, 9, 10, 11);
#include "Button.h"
#include "AlarmTone.h"
#include "Clock.h"
#include "config.h"
Button hourButton(A0);
Button minuteButton(A1);
Button alarmButton(A2);
//const int COLON_PIN = 13;
#define RLY_PIN 2
Adafruit_SSD1306 display(128, 64, &Wire);
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
Serial.begin(57600);
pinMode(RLY_PIN, OUTPUT);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
display.display();
#ifndef ESP8266
while (!Serial); // wait for serial port to connect. Needed for native USB
#endif
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running, let's set the time!");
// When time needs to be set on a new device, or after a power loss, the
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
// When time needs to be re-set on a previously configured device, the
// following line sets the RTC to the date & time this sketch was compiled
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
void loop () {
DateTime now = rtc.now();
DateTime time = rtc.now();
display.display();
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE,0);
display.setCursor(2,10);
display.print(String("DateTime::TIMESTAMP_FULL:\t")+time.timestamp(DateTime::TIMESTAMP_FULL));
if (now.hour() == 00 && now.minute() == 02)
{
//display.clearDisplay();
display.setCursor(2,25);
digitalWrite(RLY_PIN,HIGH);
display.print("Light ON");
//motorA.setSpeed(0);
//motorA.runSpeed();
}
if (now.hour() == 00 && now.minute() == 03)
{
//display.clearDisplay();
display.setCursor(2,25);
digitalWrite(RLY_PIN,LOW);
display.print("Light OFF");
//motorA.setSpeed(720);
//motorA.runSpeed();
}
}