本帖最后由 云天 于 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密码
复制代码
【演示视频】
|