#include "SPI.h"
#include "Adafruit_GFX.h" //display
#include "Adafruit_ILI9341.h" //display
#include "RTClib.h" // Date and time DS1307 RTC
#include "Wire.h" //libreria per il bus I2C
//presi da questo esempio
//https://cplusplus.com/reference/cstring/strcmp/
#include <stdio.h>
#include <string.h>
// definisco i pin del display
#define TFT_DC 9
#define TFT_CS 10
// initialize ILI9341 TFT library
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
//calibrazione schermo
const int XP=8,XM=A2,YP=A3,YM=9; //240x320 ID=0x9341
const int TS_LEFT=121,TS_RT=925,TS_TOP=85,TS_BOT=930;
//definisco le variabili dei colori
#define nero 0x0000
#define rosso 0xF800
#define bianco 0xFFFF
RTC_DS1307 rtc; //creo istanza rtc
int orario = 0; //inizializzo var orario
int orarioconf = 0; // variabile per confronto orario
void setup() {
Serial.begin(9600); // preparo la seriale per rtc
// verifico che rtc funzioni
if (!rtc.begin()) {
Serial.println("Errore! Verifica le connesioni!");
return;
}
//se l'RTC non è stato mai inizializzato allora configuro l'ora utilizzando
//l'ora di compilazione dello sketch
if (!rtc.isrunning()) {
Serial.println("Configuro l'ora");
//Uso l'ora di compilazione dello sketch
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
tft.begin(); // inizializzo il display
tft.setRotation(135); //setto l'orientamento del testo (orizzontale)
tft.fillScreen(nero); //setto il colore di sfondo
}
void loop() {
//Richiamo l'ora
DateTime now = rtc.now();
//stampo l'ora sul display
tft.setTextSize(3);
tft.setCursor(35, 100);
tft.setTextColor(rosso);
orario = "mm"; // creazione della stringa con orario
//strcpy(orario, "hh:mm");
//if (now.toString(orarioconf) != now.toString(orario)) {
if (orarioconf != orario) {
//tft.println (strcmp (orarioconf,orario));
//if (!strcmp (now.toString(orarioconf), now.toString(orario)) != 0) {
//if (!strcmp(dialedNumber, "01")) return 1;
// stampo un rettangolo nero per cancellare l'ora
// 1 dist da sx - 2 dist dall'alto - 3 lung - 4 alt
tft.fillRect(0, 100, 400, 70, bianco);
tft.println (orario);
//tft.println (int(orario));
tft.setCursor(35,120);
tft.println (orarioconf);
//tft.println (int(orarioconf));
strcpy(orarioconf, "mm");
delay(1000);
}
}