#include "RTClib.h"
RTC_DS1307 rtc;
int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
char daysOfTheWeek[7][12] = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"};
void setup() {
Serial.begin(115200);
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
}
void loop() {
DateTime now = rtc.now();
// A data atual
int year = now.year();
int month = now.month();
int day = now.day();
// Calcular o número do dia do ano
int dayOfYear = day;
// Somar os dias dos meses anteriores
for (int i = 0; i < month - 1; i++) {
dayOfYear += daysInMonth[i];
}
// Verificar se o ano é bissexto e ajustar o mês de fevereiro, se necessário
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
if (month > 2) {
dayOfYear++; // Adiciona um dia a mais se for um ano bissexto e o mês já passou de fevereiro
}
}
// Exibir a data no formato: Dia/Mês/Ano (Número do dia do ano)
Serial.print("Data: ");
Serial.print(day, DEC);
Serial.print("/");
Serial.print(month, DEC);
Serial.print("/");
Serial.print(year, DEC);
Serial.print(" - (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print("- Dia do ano: ");
Serial.println(dayOfYear);
delay(3000); // Espera 3 segundos antes de atualizar a leitura
}