#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#include "RTClib.h"
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int pot;
int set_hour;
int set_minute;
int set_second;
int mode = 0;
void setup() {
Serial.begin(115200);
pinMode(A1, INPUT);
pinMode(2, INPUT_PULLUP);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
}
void loop() {
DateTime now = rtc.now();
rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
pot = (analogRead(A1));
set_hour = now.hour();
set_minute = now.minute();
set_second = now.second();
display.fillRect(0,0,128,128,BLACK);
if((digitalRead(2) == LOW) && (mode <= 2)){
mode++;
delay(100);
}
if((digitalRead(2) == LOW) && (mode >= 3)){
mode = 0;
delay(100);
}
if(mode == 1){
set_hour = pot/42;
display.drawFastHLine(0,23,5,WHITE);
}
if(mode == 2){
set_minute = pot/17;
display.drawFastHLine(15,23,5,WHITE);
}
rtc.adjust(DateTime(2024,3,21,set_hour,set_minute,set_second));
display.setCursor(0,0);
display.setTextSize(1);
display.setTextColor(WHITE);
display.print("Current time: ");
display.setCursor(0,13);
display.print(now.hour(), DEC);
display.print(':');
display.print(now.minute(),DEC);
display.print(':');
display.print(now.second(),DEC);
//display.setCursor(0,26);
//display.print(pot);
display.display();
}