#include <WiFi.h>
#include <HTTPClient.h>
#include "time.h"
#include <sys/time.h>
//#include <TEA5767.h>
//TEA5767 radio = TEA5767();
#include <EEPROM.h>
//#include <Adafruit_ST7789.h> // Hardware-specific library for ST7789
#include <SPI.h>
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
// For the breakout, you can use any 2 or 3 pins
// These pins will also work for the 1.8" TFT shield
#define TFT_CS 26 // DETTO CS ex 15 LCD decine ore
#define TFT1_CS 33 // CS LCD unità ore
#define TFT2_CS 15 // CS LCD decine minuti
#define TFT3_CS 32 // CS LCD unità minuti
#define TFT_RST 2 // pin EN
#define TFT_DC 13 // DETTO RS ex 17
#define TFT_MOSI 14 // DETTO MOSI O SDA
#define TFT_SCLK 27 // DETTO SCL
byte comando = 0;
int minuti=66;
int ore=66;
int font = 0;
float frequenza;
char orario[] = "AAAA";
//char ssid[33]="CespyNet";
char ssid[33]="Wokwi-GUEST";
//char password[64]="st3f@ni@02";
char password[64]="";
const char* ntpServer = "ntp1.inrim.it";
unsigned long previousMillis = 0;
time_t sec;
struct tm timeinfo;
struct Wifi_Struct {
char sid[33];
char pwd[64];
};
Wifi_Struct credenziali;
char direc[11];
char filenam[11];
int x = 0;
//SPIFFS_ImageReader reader;
void setup() {
Serial.begin(115200);
// Prova();
font = 5;
CalcolaFont();
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
if (x == 10){
x = 0;
filenam[0] = 47;
filenam[1] = 0;
strcat(filenam,"nowifi.BMP");
//bmpDraw(filenam, 0, 0, 0);
delay(1500);
}
delay(1500);
x +=1;
}
WiFiClient client; // or WiFiClientSecure for HTTPS
HTTPClient http;
//http.useHTTP10(true);
http.begin("http://ip.seeip.org");
int response = http.GET();
while(response < 0){
filenam[0] = 47;
filenam[1] = 0;
strcat(filenam,"nointnet.BMP");
//bmpDraw(filenam, 0, 0, 0);
delay(1500);
delay(10000);
response = http.GET();
//Serial.println(response);
}
configTime(0, 0, ntpServer);
getLocalTime(&timeinfo);
setenv("TZ","CET-1CEST,M3.5.0/2,M10.5.0/3",1); // Now adjust the TZ. Clock settings are adjusted to show the new local time
tzset();
http.end();
//radio.init(14);
}
void loop() {
time_t now;
time(&now);
localtime_r(&now, &timeinfo);
Serial.println(timeinfo.tm_min);
if (timeinfo.tm_min != minuti){
if (timeinfo.tm_wday == 0 && timeinfo.tm_hour == 3 && timeinfo.tm_min == 1 && timeinfo.tm_sec < 2){ //Ogni Domenica alle 3 aggiorna l'orario
//AggiornaOrario();
minuti = 66;
strcpy(orario,"AAAA");
}
minuti = timeinfo.tm_min;
ore = timeinfo.tm_hour;
/* Serial.print("decina ore: ");
Serial.println(int(ore/10));
Serial.print("unita ore: ");
Serial.println(ore - (int(ore/10)*10));
Serial.print("decina minuti: ");
Serial.println(int(minuti/10));
Serial.print("unita minuti: ");
Serial.println(minuti - (int(minuti/10)*10)); */
if ( int(ore/10) != orario[0] ){ //Controllo se sono cambiate le decine delle ore
filenam[strlen(filenam)-5] = int(ore/10)+48;
Serial.print("File decine ore: ");
Serial.println(filenam);
//reader.drawBMP(filenam, tft, 0, 0); //bmpDraw(filenam, 0, 0, 0);
}
if ( ore - (int(ore/10)*10) != orario[1] ){ //Controllo se sono cambiate le unità delle ore
filenam[strlen(filenam)-5] = ore - (int(ore/10)*10)+48;
Serial.print("File unita ore: ");
Serial.println(filenam);
//reader.drawBMP(filenam, tft1, 0, 0);//bmpDraw(filenam, 0, 0, 1);
}
if ( int(minuti/10) != orario[2] ){ //Controllo se sono cambiate le decine dei minuti
filenam[strlen(filenam)-5] = int(minuti/10)+48;
Serial.print("File decine minuti: ");
Serial.println(filenam);
//reader.drawBMP(filenam, tft2, 0, 0);//bmpDraw(filenam, 0, 0, 2);
}
filenam[strlen(filenam)- 5] = minuti - (int(minuti/10)*10)+48;
Serial.print("File unita minuti: ");
Serial.println(filenam);
//reader.drawBMP(filenam, tft3, 0, 0);//bmpDraw(filenam, 0, 0, 3);
}
}
void CalcolaFont(){
strcpy (filenam,"");
filenam[0] = 47;
int posizione = 1;
for (int z=2; z>-1; z--) {
/* Serial.print("font= ");
Serial.println(font);
Serial.print("z= ");
Serial.println(z);
Serial.print("Valore cifra: ");
Serial.println(font/pow(10,z));
Serial.print("Parte intera: ");
Serial.println(int(font/pow(10,z))); */
if (int(font/pow(10,z))!=0 || posizione != 1 || z==0){
filenam[posizione]= int(font/pow(10,z))+48;
/* Serial.print("Char in posizione ");
Serial.print(posizione);
Serial.print(" = ");
Serial.println(filenam[posizione]); */
font = font - int(font/pow(10,z))*pow(10,z);
posizione +=1;
}
}
filenam[posizione] = 47;
filenam[posizione+1] = 0;
strcat(filenam,"x.BMP");
Serial.print("risultato: ");
Serial.println(filenam);
}