#include <WiFi.h>
#include <time.h>
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <ESP32Time.h>
#include "Font_Data.h"
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW//**PAROLA_HW
#define MAX_DEVICES 8
ESP32Time rtc;
/*
#define DATA_PIN 19 // or MOSI
#define CLK_PIN 18 // or SCK
#define CS_PIN 5 // or SS
*/
#define DATA_PIN 13 // or MOSI
#define CLK_PIN 14 // or SCK
#define CS_PIN 12 // or SS
//*************TIMER INTERRUPT*******************
volatile int interruptCounter;
int totalInterruptCounter;
hw_timer_t * timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
void IRAM_ATTR onTimer() {
portENTER_CRITICAL_ISR(&timerMux);
interruptCounter++;
portEXIT_CRITICAL_ISR(&timerMux);
}
//*************TIMER INTERRUPT*******************
MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
#define SPEED_TIME 70
#define PAUSE_TIME 0
#define MAX_MESG 150
int zaman = 15;
int timezone = 10800;
int dst = 0;
int mode=0;
int say=0;
int num=0;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
bool wifiDurum = true;
int ledState = LOW;
bool durum=true;
bool wifi_durum=true;
char Message[MAX_MESG+1] ="";
char WeatherTh[MAX_MESG+1] = "";
struct tm timeinfo;
uint16_t h, m, s;
uint8_t dow;
int day;
uint8_t month;
String year;
// Global variables
char szTime[9]; // mm:ss\0
char szsecond[4]; // ss
char szMesg[MAX_MESG+1] = "";
String mesaj="ESP32 kolcu WiFi Clock ";
uint32_t bas = 0; // millis() memory
uint32_t bitis = 0; // millis() memory
void getsec(char *psz)
{
//sprintf(psz, "%02d", s);
}
void getTime(char *psz, bool f = true)
{
//sprintf(psz, "%02d%c%02d", h, (f ? ':' : ' '), m);
}
//***************************
void printLocalTime()
{
if(getLocalTime(&timeinfo)){
//rtc.setTimeStruct(timeinfo);
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}
}
//***************************
void setup(void)
{
pinMode(2, OUTPUT);
Serial.begin(115200);
delay(100);
Serial.println();
Serial.println();
Serial.print("Connecting to ************************************ ");
Serial.println(ssid);
WiFi.begin(ssid, password);
configTime(10800, 0, "pool.ntp.org", "time.nist.gov");
/*
while (WiFi.status() != WL_CONNECTED) {
num++;
if(num==10){
ESP. restart();//bağlanma denemesi 10 kez olursa ESP32 yi resetle
num=0;
}
delay(500);
Serial.print(".");
}
*/
//*************TIMER INTERRUPT*******************
timer = timerBegin(0, 80, true);
timerAttachInterrupt(timer, &onTimer, true);
timerAlarmWrite(timer, 1000000, true);
timerAlarmEnable(timer);
//*************TIMER INTERRUPT*******************
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
P.setIntensity(0);
modeB();
rtc.setTime(30, 24, 15, 17, 1, 2021);
}
void loop(void)
{
static uint32_t lastTime = 0; // millis() memory
static uint8_t display = 0; // current display mode
static bool flasher = false; // seconds passing flasher
P.displayAnimate();
//*************TIMER INTERRUPT*******************
if (interruptCounter > 0) {
portENTER_CRITICAL(&timerMux);
interruptCounter--;
portEXIT_CRITICAL(&timerMux);
//totalInterruptCounter++;
//Serial.println("kesme");
//Serial.print("An interrupt as occurred. Total number: ");
//Serial.println(totalInterruptCounter);
//*************************************************
if(WiFi.status() == WL_CONNECTED){
Serial.println("*/*/*/*/*/*/*/*/ WiFi bağlı");
}else{
Serial.println("+/+/+/+/+/+/+/+/ bağlı değil");
}
//getTimeReducedTraffic(zaman);//bir saat sonra güncelleme
//Serial.print("qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq rtc zamanı : ");
//Serial.println(rtc.getTime());
//Serial.print("qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq rtc zamanı : ");
//struct tm timeinfo = rtc.getTimeStruct();
//Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
printLocalTime();
getsec(szsecond);
getTime(szTime, flasher);
flasher = !flasher;
//***********************************
/*
if(wifi_durum==true){
WiFi.status() != WL_CONNECTED;
num++;
if(num==10){ESP. restart();}
if(WiFi.status()==WL_CONNECTED){
wifi_durum=false;
num=0;
display=0;
}
}
*/
//***************************
P.displayReset(0);
P.displayReset(1);
//*******************************
digitalWrite(2, HIGH); // LED YANAR
if(ledState==LOW){
ledState=HIGH;
digitalWrite(2,ledState);
}else{
ledState=LOW;
digitalWrite(2,ledState);
}
}
//*************TIMER INTERRUPT*******************
}
//********** loop ****************************
//****************************
void modeB(){//saat
P.begin(2);
P.setInvert(false);
P.setZone(0, 0, 0);//msaniye
P.setZone(1,1,3);//saat dakika
P.setFont(0, numeric7Seg);
P.setFont(1, numeric7Se);
P.displayZoneText(0, szsecond, PA_LEFT, SPEED_TIME, 0, PA_PRINT, PA_NO_EFFECT);
P.displayZoneText(1, szTime, PA_CENTER, SPEED_TIME, PAUSE_TIME, PA_PRINT, PA_NO_EFFECT);
P.setIntensity(0);
}
//********************