#include <Arduino.h>
#include <uRTCLib.h>
uRTCLib rtc(0x68);
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
const int SCREEN_WIDTH = 128; // OLED display width, in pixels
const int SCREEN_HEIGHT = 64; // OLED display height, in pixels
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#define PUMP 7
void setup () {
pinMode(PUMP,OUTPUT);
Serial.begin(9600);
URTCLIB_WIRE.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // here the 0x3c is the I2C address, check your i2c address if u have multiple devices.
display.clearDisplay();
delay(2000);
}
void loop() {
rtc.refresh();
Serial.print(rtc.day());
Serial.print('/');
Serial.print(rtc.month());
Serial.print('/');
Serial.print(rtc.year());
Serial.print(" (");
Serial.print(daysOfTheWeek[rtc.dayOfWeek()-1]);
Serial.print(") ");
Serial.print(rtc.hour());
Serial.print(':');
Serial.print(rtc.minute());
Serial.print(':');
if (rtc.second() < 10) {
Serial.print(0);
}
Serial.println(rtc.second());
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0, 0);
if (rtc.hour() < 10) { display.print(0); }
display.print(rtc.hour());
display.print(':');
if (rtc.minute() < 10) { display.print(0); }
display.print(rtc.minute());
display.print(':');
if (rtc.second() < 10) { display.print(0); }
display.print(rtc.second());
display.setTextSize(2);
display.setCursor(0, 20);
if (rtc.second() < 30)
{
digitalWrite(PUMP,1);
display.print("PUMP :ON ");
}
else
{
digitalWrite(PUMP,0);
display.print("PUMP :OFF");
}
display.display();
delay(1000);
}