// НЕ ЗАБУДЬ АКТУАЛИЗИРОВАТЬ ПИНЫ ПО НА РЕАЛЬНОМ ЖЕЛЕЗЕ
// Vcc - 3v3
// GND - GND.1
// CS - D15
// RST - D4 - не обязателен ?
// DC - D2
// MOSI - D23
// SCK - D18
// LED -
// MISO - D19 - не обязателен ?
// ----------------------------------------------------
#include <Arduino.h>
#include <TFT_eSPI.h>
#include <WiFi.h>
#include <PubSubClient.h>
#include "time.h"
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* ntpServer0 = "0.pool.ntp.org";
const char* ntpServer1 = "1.pool.ntp.org";
const char* ntpServer2 = "2.pool.ntp.org"; // сервера для сихронизации времени.
const long gmtOffset_sec = 0;
const int daylightOffset_sec = 10800;
unsigned long lastConnectionTime = 0; // время последней передачи данных
#define postingInterval 600000 // интервал между отправками данных (10 минут)
TFT_eSPI tft = TFT_eSPI();
void setup() {
Serial.begin(74880);
tft.init();
tft.setRotation (0);
tft.fillScreen (TFT_BLACK);
tft.setTextSize (1);
tft.println ("network ");
tft.println ("connecting");
WiFi.begin (ssid, password);
Serial.println ("connecting");
while(WiFi.status() != WL_CONNECTED) {
delay (500);
Serial.print (".");
tft.print (".");
}
Serial.println ();
Serial.print ("Connected to WiFi network ");
tft.println ("\nConnected to WiFi network ");
tft.println ();
Serial.print (ssid);
tft.print (ssid);
Serial.print (" - IP adress: ");
tft.print (" - IP adress: ");
Serial.println (WiFi.localIP());
tft.println (WiFi.localIP());
tft.fillScreen(TFT_BLACK); tft.setCursor(0, 36); tft.print(WiFi.localIP());
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer0, ntpServer1, ntpServer2);
printLocalTime();
}
void loop() {
unsigned long current = millis();
static unsigned long previous = current;
if (current - previous > 1000) {previous = current;
// что-то делается
printLocalTime();
}
}
void printLocalTime()
{
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
// display.setColor(BLACK);
tft.fillRect(0, 47, 128, 9, TFT_BLACK); tft.setCursor(0, 45); tft.print("Failed to obtain time");
return;
}
char timeStringBuff[50]; //50 символов должно быть достаточно
strftime(timeStringBuff, sizeof(timeStringBuff), "%a %d %b %y %H:%M:%S", &timeinfo);
//display.setColor(BLACK);
tft.fillRect(0, 47, 128, 9, TFT_BLACK); tft.setCursor(0, 45); tft.print(String(timeStringBuff));
}