В настоящее время я пытаюсь создать таймер круга, используя микроконтроллер ESP32.Я подумываю об использовании NTP-сервера pool.ntp.org
для получения точности синхронизации в несколько миллисекунд.
Я пытался сделать что-то подобное
#include <WiFi.h>
#include "time.h"
String time_str;
time_t epoch;
const char* ssid = "SSID";
const char* password = "PASSWORD";
void setup() {
Serial.begin(115200);
Start_WiFi(ssid,password);
configTime(0, 0, "pool.ntp.org");
}
void loop() {
setenv("TZ", " WIB-7", 1);
Serial.println(" Jakarta Time = "+printLocalTime());
Serial.println();
delay(100);
}
String printLocalTime(){
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
Serial.println("Failed to obtain time");
return "Time Error";
}
char output[80];
//epoch = mktime(&timeinfo);
//return epoch;
strftime(output, 80, "%d-%b-%y, %H:%M:%S", &timeinfo);
time_str = String(output);
return time_str;
}
int Start_WiFi(const char* ssid, const char* password){
int connAttempts = 0;
Serial.println("\r\nConnecting to: "+String(ssid));
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED ) {
delay(500);
Serial.print(".");
if(connAttempts > 20) return -5;
connAttempts++;
}
return 1;
}
Я хотел бы получить точность в миллисекундахstruct tm timeinfo
.Я пытался использовать strftime
и mktime
, но я понимаю, что и strftime
, и mktime
возвращают только до секунды.