// this doesn't seem to work at the moment
#include <EncoderButton.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <Wire.h>
#include "RTClib.h"
#include <TimeLib.h>
#define rot_switch_pin 2
#define rot_pot1_pin 0 // ext int A rotary encoder pin
#define rot_pot2_pin 1 // ext int B rotary encoder pin
#define TFT_DC 5
#define TFT_CS 15
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
EncoderButton eb1(rot_pot1_pin, rot_pot2_pin,rot_switch_pin);
//EncoderButton.begin();
#define myDebug
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
RTC_DS1307 rtc;
unsigned long LastUnSyncTime = 0;
time_t lastTime = now();
void setup() {
pinMode(rot_switch_pin, INPUT_PULLUP);
tft.begin();
tft.setRotation(1);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(1);
//Link the event(s) to your function
eb1.setClickHandler(onEb1Clicked);
eb1.setEncoderHandler(onEb1Encoder);
setup_rtc();
}
void loop() {
eb1.update();
checkTime();
}
void setup_rtc() {
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
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));
}
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
DateTime now = rtc.now();
printDigits(now.day());
Serial.print('/');
printDigits(now.month());
Serial.print('/');
printDigits(now.year());
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
printDigits(now.hour());
Serial.print(':');
printDigits(now.minute());
Serial.print(':');
printDigits(now.second());
Serial.println();
}
void checkTime() {
if ((millis() - LastUnSyncTime) > 10000)
{
DateTime now = rtc.now();
printDigits(now.day());
Serial.print('/');
printDigits(now.month());
Serial.print('/');
printDigits(now.year());
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
printDigits(now.hour());
Serial.print(':');
printDigits(now.minute());
Serial.print(':');
printDigits(now.second());
Serial.println();
LastUnSyncTime = millis();
}
}
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, DEC);
}
void onEb1Clicked(EncoderButton& eb) {
Serial.print("eb1 clickCount: ");
Serial.println(eb.clickCount());
}
void onEb1Encoder(EncoderButton& eb) {
Serial.print("eb1 incremented by: ");
Serial.println(eb.increment());
Serial.print("eb1 position is: ");
Serial.println(eb.position());
}