introduce NTP
This commit is contained in:
@@ -15,3 +15,4 @@ framework = arduino
|
||||
lib_deps =
|
||||
fbiego/ESP32Time@^2.0.4
|
||||
neironx/RTCLib@^1.6.0
|
||||
arduino-libraries/NTPClient@^3.2.1
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
#include <Arduino.h>
|
||||
#include <NTPClient.h>
|
||||
// change next line to use with another board/shield
|
||||
#include <WiFi.h>
|
||||
//#include <WiFi.h> // for WiFi shield
|
||||
//#include <WiFi101.h> // for WiFi 101 shield or MKR1000
|
||||
#include <WiFiUdp.h>
|
||||
const String FirmwareVersion="010310";
|
||||
//Format _X.XX__
|
||||
//NIXIE CLOCK MCU107 by GRA & AFCH (fominalec@gmail.com)
|
||||
@@ -21,7 +27,7 @@
|
||||
//#include <ClickButton.h>
|
||||
//#include <TimeLib.h>
|
||||
//#include <Tone.h>
|
||||
#include <EEPROM.h>
|
||||
// #include <EEPROM.h>
|
||||
#include <ESP32Time.h>
|
||||
#include <RTClib.h>
|
||||
|
||||
@@ -183,8 +189,13 @@ int functionDownButton=0;
|
||||
int functionUpButton=0;
|
||||
bool LEDsLock=false;
|
||||
|
||||
ESP32Time tijd(3600);
|
||||
//ESP32Time tijd(3600);
|
||||
DS1307 rtc;
|
||||
const char *ssid = "iot";
|
||||
const char *password = "Rijnstraat214";
|
||||
|
||||
WiFiUDP ntpUDP;
|
||||
NTPClient timeClient(ntpUDP);
|
||||
|
||||
void doTest();
|
||||
void getRTCTime();
|
||||
@@ -208,12 +219,18 @@ void setup()
|
||||
//setRTCDateTime(23,40,00,25,7,15,1);
|
||||
|
||||
Serial.begin(115200);
|
||||
|
||||
if (!rtc.isrunning()) {
|
||||
Serial.println("RTC is NOT running!");
|
||||
// following line sets the RTC to the date & time this sketch was compiled
|
||||
rtc.adjust(DateTime(__DATE__, __TIME__));
|
||||
WiFi.begin(ssid, password);
|
||||
|
||||
while ( WiFi.status() != WL_CONNECTED ) {
|
||||
delay ( 500 );
|
||||
Serial.print ( "." );
|
||||
}
|
||||
timeClient.begin();
|
||||
// if (!rtc.isrunning()) {
|
||||
// Serial.println("RTC is NOT running!");
|
||||
// // following line sets the RTC to the date & time this sketch was compiled
|
||||
// rtc.adjust(DateTime(__DATE__, __TIME__));
|
||||
// }
|
||||
|
||||
// if (EEPROM.read(HourFormatEEPROMAddress)!=12) value[hModeValueIndex]=24; else value[hModeValueIndex]=12;
|
||||
// if (EEPROM.read(RGBLEDsEEPROMAddress)!=0) RGBLedsOn=true; else RGBLedsOn=false;
|
||||
@@ -247,6 +264,9 @@ void setup()
|
||||
SPI.setDataMode (SPI_MODE3); // Mode 3 SPI
|
||||
SPI.setClockDivider(SPI_CLOCK_DIV128); // SCK = 16MHz/128= 125kHz
|
||||
|
||||
pinMode(Anode0Pin, OUTPUT);
|
||||
pinMode(Anode1Pin, OUTPUT);
|
||||
pinMode(Anode2Pin, OUTPUT);
|
||||
//buttons pins inits
|
||||
// pinMode(pinSet, INPUT_PULLUP);
|
||||
// pinMode(pinUp, INPUT_PULLUP);
|
||||
@@ -319,14 +339,14 @@ long modesChangePeriod=timeModePeriod;
|
||||
MAIN Programm
|
||||
***************************************************************************************************************/
|
||||
void loop() {
|
||||
|
||||
if (((millis()%60000)==0)&&(RTC_present)) //synchronize with RTC every 10 seconds
|
||||
{
|
||||
getRTCTime();
|
||||
setTime(RTC_hours, RTC_minutes, RTC_seconds, RTC_day, RTC_month, RTC_year);
|
||||
Serial.println("sync:");
|
||||
Serial.println(RTC_seconds);
|
||||
}
|
||||
timeClient.update();
|
||||
// if (((millis()%60000)==0)&&(RTC_present)) //synchronize with RTC every 10 seconds
|
||||
// {
|
||||
// getRTCTime();
|
||||
// setTime(RTC_hours, RTC_minutes, RTC_seconds, RTC_day, RTC_month, RTC_year);
|
||||
// Serial.println("sync:");
|
||||
// Serial.println(RTC_seconds);
|
||||
// }
|
||||
|
||||
//p=playmusic(p);
|
||||
|
||||
@@ -336,22 +356,22 @@ void loop() {
|
||||
// prevTime4FireWorks=millis();
|
||||
// }
|
||||
|
||||
if ((menuPosition==TimeIndex) || (modeChangedByUser==false) ) modesChanger();
|
||||
// if ((menuPosition==TimeIndex) || (modeChangedByUser==false) ) modesChanger();
|
||||
doIndication();
|
||||
|
||||
// setButton.Update();
|
||||
// upButton.Update();
|
||||
// downButton.Update();
|
||||
if (editMode==false)
|
||||
{
|
||||
blinkMask=B00000000;
|
||||
// if (editMode==false)
|
||||
// {
|
||||
// blinkMask=B00000000;
|
||||
|
||||
} else if ((millis()-enteringEditModeTime)>60000)
|
||||
{
|
||||
editMode=false;
|
||||
menuPosition=firstChild[menuPosition];
|
||||
blinkMask=blinkPattern[menuPosition];
|
||||
}
|
||||
// } else if ((millis()-enteringEditModeTime)>60000)
|
||||
// {
|
||||
// editMode=false;
|
||||
// menuPosition=firstChild[menuPosition];
|
||||
// blinkMask=blinkPattern[menuPosition];
|
||||
// }
|
||||
// if (setButton.clicks>0) //short click
|
||||
// {
|
||||
// modeChangedByUser=true;
|
||||
@@ -484,33 +504,33 @@ void loop() {
|
||||
case TimeIndex: //time mode
|
||||
if (!transactionInProgress) stringToDisplay=updateDisplayString();
|
||||
doDotBlink();
|
||||
checkAlarmTime();
|
||||
//checkAlarmTime();
|
||||
break;
|
||||
case DateIndex: //date mode
|
||||
if (!transactionInProgress) stringToDisplay=updateDateString();
|
||||
dotPattern=B01000000;//turn on lower dots
|
||||
/*digitalWrite(pinUpperDots, LOW);
|
||||
digitalWrite(pinLowerDots, HIGH);*/
|
||||
checkAlarmTime();
|
||||
break;
|
||||
case AlarmIndex: //alarm mode
|
||||
stringToDisplay=PreZero(value[AlarmHourIndex])+PreZero(value[AlarmMinuteIndex])+PreZero(value[AlarmSecondIndex]);
|
||||
if (value[Alarm01]==1) /*digitalWrite(pinUpperDots, HIGH);*/ dotPattern=B10000000; //turn on upper dots
|
||||
else
|
||||
{
|
||||
/*digitalWrite(pinUpperDots, LOW);
|
||||
digitalWrite(pinLowerDots, LOW);*/
|
||||
dotPattern=B00000000; //turn off upper dots
|
||||
}
|
||||
checkAlarmTime();
|
||||
break;
|
||||
case hModeIndex: //12/24 hours mode
|
||||
stringToDisplay="00"+String(value[hModeValueIndex])+"00";
|
||||
dotPattern=B00000000;//turn off all dots
|
||||
/*digitalWrite(pinUpperDots, LOW);
|
||||
digitalWrite(pinLowerDots, LOW);*/
|
||||
checkAlarmTime();
|
||||
//checkAlarmTime();
|
||||
break;
|
||||
// case AlarmIndex: //alarm mode
|
||||
// stringToDisplay=PreZero(value[AlarmHourIndex])+PreZero(value[AlarmMinuteIndex])+PreZero(value[AlarmSecondIndex]);
|
||||
// if (value[Alarm01]==1) /*digitalWrite(pinUpperDots, HIGH);*/ dotPattern=B10000000; //turn on upper dots
|
||||
// else
|
||||
// {
|
||||
// /*digitalWrite(pinUpperDots, LOW);
|
||||
// digitalWrite(pinLowerDots, LOW);*/
|
||||
// dotPattern=B00000000; //turn off upper dots
|
||||
// }
|
||||
// //checkAlarmTime();
|
||||
// break;
|
||||
// case hModeIndex: //12/24 hours mode
|
||||
// stringToDisplay="00"+String(value[hModeValueIndex])+"00";
|
||||
// dotPattern=B00000000;//turn off all dots
|
||||
// /*digitalWrite(pinUpperDots, LOW);
|
||||
// digitalWrite(pinLowerDots, LOW);*/
|
||||
// //checkAlarmTime();
|
||||
// break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -579,9 +599,9 @@ void doIndication()
|
||||
|
||||
switch (b)
|
||||
{
|
||||
case 1:{Anode0ON; Anode1OFF; Anode2OFF; break;};
|
||||
case 2:{Anode0OFF; Anode1ON; Anode2OFF; break;};
|
||||
case 3:{Anode0OFF; Anode1OFF; Anode2ON; break;};
|
||||
case 1:{Anode0ON; Anode1OFF; Anode2OFF; break;};
|
||||
case 2:{Anode0OFF; Anode1ON; Anode2OFF; break;};
|
||||
case 3:{Anode0OFF; Anode1OFF; Anode2ON; break;};
|
||||
}
|
||||
b=b+1;
|
||||
if (b==4) {b=1;}
|
||||
@@ -744,9 +764,9 @@ byte bcdToDec(byte val) {
|
||||
|
||||
void getRTCTime()
|
||||
{
|
||||
DateTime now = rtc.now();
|
||||
char buf[20];
|
||||
Serial.println(now.tostr(buf));
|
||||
DateTime now = timeClient.;
|
||||
// char buf[20];
|
||||
// Serial.println(tijd.tostr(buf));
|
||||
// Wire.beginTransmission(DS1307_ADDRESS);
|
||||
// Wire.write(zero);
|
||||
// Wire.endTransmission();
|
||||
@@ -838,62 +858,62 @@ bool isValidDate()
|
||||
|
||||
}
|
||||
|
||||
byte default_dur = 4;
|
||||
byte default_oct = 6;
|
||||
int bpm = 63;
|
||||
int num;
|
||||
long wholenote;
|
||||
long duration;
|
||||
byte note;
|
||||
byte scale;
|
||||
char* parseSong(char *p)
|
||||
{
|
||||
// Absolutely no error checking in here
|
||||
// format: d=N,o=N,b=NNN:
|
||||
// find the start (skip name, etc)
|
||||
// byte default_dur = 4;
|
||||
// byte default_oct = 6;
|
||||
// int bpm = 63;
|
||||
// int num;
|
||||
// long wholenote;
|
||||
// long duration;
|
||||
// byte note;
|
||||
// byte scale;
|
||||
// char* parseSong(char *p)
|
||||
// {
|
||||
// // Absolutely no error checking in here
|
||||
// // format: d=N,o=N,b=NNN:
|
||||
// // find the start (skip name, etc)
|
||||
|
||||
while(*p != ':') p++; // ignore name
|
||||
p++; // skip ':'
|
||||
// while(*p != ':') p++; // ignore name
|
||||
// p++; // skip ':'
|
||||
|
||||
// get default duration
|
||||
if(*p == 'd')
|
||||
{
|
||||
p++; p++; // skip "d="
|
||||
num = 0;
|
||||
while(isdigit(*p))
|
||||
{
|
||||
num = (num * 10) + (*p++ - '0');
|
||||
}
|
||||
if(num > 0) default_dur = num;
|
||||
p++; // skip comma
|
||||
}
|
||||
// // get default duration
|
||||
// if(*p == 'd')
|
||||
// {
|
||||
// p++; p++; // skip "d="
|
||||
// num = 0;
|
||||
// while(isdigit(*p))
|
||||
// {
|
||||
// num = (num * 10) + (*p++ - '0');
|
||||
// }
|
||||
// if(num > 0) default_dur = num;
|
||||
// p++; // skip comma
|
||||
// }
|
||||
|
||||
// get default octave
|
||||
if(*p == 'o')
|
||||
{
|
||||
p++; p++; // skip "o="
|
||||
num = *p++ - '0';
|
||||
if(num >= 3 && num <=7) default_oct = num;
|
||||
p++; // skip comma
|
||||
}
|
||||
// // get default octave
|
||||
// if(*p == 'o')
|
||||
// {
|
||||
// p++; p++; // skip "o="
|
||||
// num = *p++ - '0';
|
||||
// if(num >= 3 && num <=7) default_oct = num;
|
||||
// p++; // skip comma
|
||||
// }
|
||||
|
||||
// get BPM
|
||||
if(*p == 'b')
|
||||
{
|
||||
p++; p++; // skip "b="
|
||||
num = 0;
|
||||
while(isdigit(*p))
|
||||
{
|
||||
num = (num * 10) + (*p++ - '0');
|
||||
}
|
||||
bpm = num;
|
||||
p++; // skip colon
|
||||
}
|
||||
// // get BPM
|
||||
// if(*p == 'b')
|
||||
// {
|
||||
// p++; p++; // skip "b="
|
||||
// num = 0;
|
||||
// while(isdigit(*p))
|
||||
// {
|
||||
// num = (num * 10) + (*p++ - '0');
|
||||
// }
|
||||
// bpm = num;
|
||||
// p++; // skip colon
|
||||
// }
|
||||
|
||||
// BPM usually expresses the number of quarter notes per minute
|
||||
wholenote = (60 * 1000L / bpm) * 4; // this is the time for whole note (in milliseconds)
|
||||
return p;
|
||||
}
|
||||
// // BPM usually expresses the number of quarter notes per minute
|
||||
// wholenote = (60 * 1000L / bpm) * 4; // this is the time for whole note (in milliseconds)
|
||||
// return p;
|
||||
// }
|
||||
|
||||
// now begin note loop
|
||||
// static unsigned long lastTimeNotePlaying=0;
|
||||
@@ -1131,14 +1151,14 @@ String updateDisplayString()
|
||||
|
||||
String getTimeNow()
|
||||
{
|
||||
DateTime time = rtc.now();
|
||||
// DateTime time = rtc.now();
|
||||
if (value[hModeValueIndex]==24) return PreZero(tijd.getHour())+PreZero(tijd.getMinute())+PreZero(tijd.getSecond());
|
||||
else return PreZero(tijd.getHour())+PreZero(tijd.getMinute())+PreZero(tijd.getSecond());
|
||||
}
|
||||
|
||||
String updateDateString()
|
||||
{
|
||||
DateTime time = rtc.now();
|
||||
// DateTime time = tijd.now();
|
||||
static unsigned long lastTimeDateUpdate=millis();
|
||||
static String DateString=PreZero(tijd.getDay())+PreZero(tijd.getMonth())+PreZero(tijd.getYear()%1000);
|
||||
if ((millis()-lastTimeDateUpdate)>1000)
|
||||
|
||||
Reference in New Issue
Block a user