#include "RTClib.h"
#include <SPI.h>
// #define SPI_CLK 13 // Implicit
// #define SPI_Data 11 // Implicit
#define SPI_OutLatch 10
#define SPI_InLatch 9
RTC_DS1307 rtc;
const char daysOfTheWeek[7][9] = { "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi" };
const char monthOfYear[12][10] = { "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre" };
void setup() {
Serial.begin(115200);
if (!rtc.begin()) {
Serial.println(F("Couldn't find RTC"));
Serial.flush();
abort();
}
// pinMode(SPI_CLK, OUTPUT); // Implicit
// pinMode(SPI_Data, OUTPUT); // Implicit
pinMode(SPI_OutLatch, OUTPUT);
pinMode(SPI_InLatch, OUTPUT);
// initialize SPI:
SPI.begin();
SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0));
}
void loop() {
static int8_t oldSecs;
static int16_t LoopCnt;
static char val[10];
static int16_t RxData1, RxData2;
LoopCnt++;
DateTime now = rtc.now();
if (oldSecs != now.second()) {
oldSecs = now.second();
Serial.print(F("Loop Count: "));
Serial.print(LoopCnt);
Serial.print(" - ");
LoopCnt = 0;
Serial.print(F("Current time: "));
sprintf(val, "%04d", now.year());
Serial.print(val);
Serial.print('/');
sprintf(val, "%02d", now.month());
Serial.print(val);
Serial.print('/');
sprintf(val, "%02d", now.day());
Serial.print(val);
sprintf(val, " %02d", now.hour());
Serial.print(val);
Serial.print(':');
sprintf(val, "%02d", now.minute());
Serial.print(val);
Serial.print(':');
sprintf(val, "%02d", now.second());
Serial.print(val);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(" ");
Serial.print(now.day());
Serial.print(" ");
Serial.print(monthOfYear[now.month() - 1]);
Serial.print(" ");
Serial.print(now.year());
Serial.println(") ");
Serial.flush();
}
digitalWrite( SPI_InLatch, HIGH);
digitalWrite(SPI_OutLatch, LOW);
RxData1 = SPI.transfer(RxData1);
digitalWrite(SPI_OutLatch, HIGH);
digitalWrite(SPI_OutLatch, LOW);
RxData2 = SPI.transfer(RxData1);
digitalWrite(SPI_OutLatch, HIGH);
digitalWrite( SPI_InLatch, LOW);
Serial.println(RxData1, BIN);
Serial.println(RxData2, BIN);
Serial.println();
Serial.flush();
}