本帖最后由 云天 于 2022-6-3 09:38 编辑  
 
 
【获取时间】 
从网络时间服务器获取时间,并使用ESP32自带的RTC时钟保持时间更新 
			
			
			- 
 - #include <WiFi.h>
 - 
 - const char *ssid = "********";    //WIFI名称
 - const char *password = "********"; //WIFI密码
 - 
 - const char *ntpServer = "pool.ntp.org";
 - const long gmtOffset_sec = 8 * 3600;
 - const int daylightOffset_sec = 0;
 - 
 - void printLocalTime()
 - {
 -     struct tm timeinfo;
 -     if (!getLocalTime(&timeinfo))
 -     {
 -         Serial.println("Failed to obtain time");
 -         return;
 -     }
 -     Serial.println(&timeinfo, "%F %T %A"); // 格式化输出
 - }
 - 
 - void setup()
 - {
 -     Serial.begin(115200);
 -     Serial.println();
 - 
 -     WiFi.begin(ssid, password);
 -     while (WiFi.status() != WL_CONNECTED)
 -     {
 -         delay(500);
 -         Serial.print(".");
 -     }
 -     Serial.println("WiFi connected!");
 - 
 -     // 从网络时间服务器上获取并设置时间
 -     // 获取成功后芯片会使用RTC时钟保持时间的更新
 -     configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
 -     printLocalTime();
 - 
 -     WiFi.disconnect(true);
 -     WiFi.mode(WIFI_OFF);
 -     Serial.println("WiFi disconnected!");
 - }
 - 
 - void loop()
 - {
 -     delay(1000);
 -     printLocalTime();
 - }
 
  复制代码
  
【时间转摩斯密码】 
摩尔斯电码(又译为摩斯密码,Morse code)则是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。它不同于现代只使用零和一两种状态的二进制代码,它的代码包括五种: 点、划、点和划之间的停顿、每个字符之间短的停顿、每个词之间中等的停顿以及句子之间长的停顿。这样的好处是,使用简单的两种状态,就能来传递所有的字母和数字,非常的简便! 
  
- 
 - #include <WiFi.h>
 - 
 - const char *ssid = "******";    //WIFI名称
 - const char *password = "******"; //WIFI密码
 - 
 - const char *ntpServer = "pool.ntp.org";
 - const long gmtOffset_sec = 8 * 3600;
 - const int daylightOffset_sec = 0;
 - String T[10]={"-----",".----","..---","...--","....-",".....","-....","--...","---..","----."};
 - void printLocalTime()
 - {
 -     struct tm timeinfo;
 -     if (!getLocalTime(&timeinfo))
 -     {
 -         Serial.println("Failed to obtain time");
 -         return;
 -     }
 -     
 -     
 -     if(timeinfo.tm_sec==0){
 -        if(timeinfo.tm_hour>9){
 -          Serial.println(T[timeinfo.tm_hour/10]);
 -          Serial.println(T[timeinfo.tm_hour%10]);
 -        }
 -        else{
 -          Serial.println(T[timeinfo.tm_hour]);
 -         }
 -     }
 -     //Serial.println(&timeinfo, "%F %T %A"); // 格式化输出
 - }
 - 
 - void setup()
 - {
 -     Serial.begin(115200);
 -     Serial.println();
 - 
 -     WiFi.begin(ssid, password);
 -     while (WiFi.status() != WL_CONNECTED)
 -     {
 -         delay(500);
 -         Serial.print(".");
 -     }
 -     Serial.println("WiFi connected!");
 - 
 -     // 从网络时间服务器上获取并设置时间
 -     // 获取成功后芯片会使用RTC时钟保持时间的更新
 -     configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
 -     printLocalTime();
 - 
 -     WiFi.disconnect(true);
 -     WiFi.mode(WIFI_OFF);
 -     Serial.println("WiFi disconnected!");
 - }
 - 
 - void loop()
 - {
 -     delay(1000);
 -     printLocalTime();
 - }
 
  复制代码
  
 
【显示时间】 
为演示方便,利用摩斯密码每分钟显示一次小时+分钟时间。 
 
 
 
 
- 
 - #include <WiFi.h>
 - 
 - const char *ssid = "******";    //WIFI名称
 - const char *password = "******"; //WIFI密码
 
  复制代码
  
【演示视频】 
 
 |