#include "RTClib.h"
#include "U8glib.h"
#include "fontsevenseg.h"
//declaración de bjeto pantalla oled
U8GLIB_SSD1306_128X64 display(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST);
#define boton 3 //pulsador de cambio estilo reloj
// Ajusta tamaño de la pantalla oled
const int SCREEN_ANCHO = 128;
const int SCREEN_ALTO = 64;
//constantes
float r = SCREEN_ALTO/2 - 2;
const int cx = SCREEN_ANCHO / 2;
const int cy = SCREEN_ALTO / 2;
const int cx0 = 32;
const int cy0 = 32;
//Numeros reloj analogico
char *number[12]={"6","5","4","3","2","1","12","11","10","9","8","7"};
int estado = 1;
int contador = 1;
//Variables globales
uint8_t hora,minuto,segundo,dia,mes;
int year;
//Creamos el objeto RTC PCF8583
RTC_PCF8563 rtc;
void setup() {
Serial.begin(57600);
rtc.begin();
rtc.adjust(DateTime(F(_DATE_), F(_TIME_)));
//rtc.adjust(DateTime(2024,3,15,15,26,6));
rtc.start();
pinMode(boton, INPUT_PULLUP);
}
//Obtenemos datos del tiempo actual
void DatoTiempo() {
DateTime now = rtc.now();
hora = now.hour();
minuto = now.minute();
segundo = now.second();
mes = now.month();
dia = now.day();
year = now.year();
}
void loop(){
DatoTiempo();
modoreloj(boton);
// Selecciona el modo del reloj
int modo = contador;
switch (modo){
case 1:
display.firstPage();
do{
drawClock(cx, cy, r, hora, minuto, segundo);
} while (display.nextPage() );
break;
case 2:
display.firstPage();
do{
digitalClockDraw(cx, cy, hora, minuto, segundo, dia, mes, year);
} while (display.nextPage() );
break;
case 3:
display.firstPage();
do{
AmbosClockDraw(cx0, cy0, hora, minuto, segundo, dia, mes, year);
} while(display.nextPage() );
break;
}
delay(100);
}