242浏览
查看: 242|回复: 0

[ESP8266/ESP32] 【Beetle ESP32-C3试用(二)】摩斯码报时

[复制链接]
本帖最后由 云天 于 2022-6-3 09:38 编辑

FriJune-202206035920..png

【获取时间】
从网络时间服务器获取时间,并使用ESP32自带的RTC时钟保持时间更新
  1. #include <WiFi.h>
  2. const char *ssid = "********";    //WIFI名称
  3. const char *password = "********"; //WIFI密码
  4. const char *ntpServer = "pool.ntp.org";
  5. const long gmtOffset_sec = 8 * 3600;
  6. const int daylightOffset_sec = 0;
  7. void printLocalTime()
  8. {
  9.     struct tm timeinfo;
  10.     if (!getLocalTime(&timeinfo))
  11.     {
  12.         Serial.println("Failed to obtain time");
  13.         return;
  14.     }
  15.     Serial.println(&timeinfo, "%F %T %A"); // 格式化输出
  16. }
  17. void setup()
  18. {
  19.     Serial.begin(115200);
  20.     Serial.println();
  21.     WiFi.begin(ssid, password);
  22.     while (WiFi.status() != WL_CONNECTED)
  23.     {
  24.         delay(500);
  25.         Serial.print(".");
  26.     }
  27.     Serial.println("WiFi connected!");
  28.     // 从网络时间服务器上获取并设置时间
  29.     // 获取成功后芯片会使用RTC时钟保持时间的更新
  30.     configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  31.     printLocalTime();
  32.     WiFi.disconnect(true);
  33.     WiFi.mode(WIFI_OFF);
  34.     Serial.println("WiFi disconnected!");
  35. }
  36. void loop()
  37. {
  38.     delay(1000);
  39.     printLocalTime();
  40. }
复制代码

【时间转摩斯密码
摩尔斯电码(又译为摩斯密码,Morse code)则是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。它不同于现代只使用零和一两种状态的二进制代码,它的代码包括五种: 点、划、点和划之间的停顿、每个字符之间短的停顿、每个词之间中等的停顿以及句子之间长的停顿。这样的好处是,使用简单的两种状态,就能来传递所有的字母和数字,非常的简便!
ThuJune-202206024064..png
  1. #include <WiFi.h>
  2. const char *ssid = "******";    //WIFI名称
  3. const char *password = "******"; //WIFI密码
  4. const char *ntpServer = "pool.ntp.org";
  5. const long gmtOffset_sec = 8 * 3600;
  6. const int daylightOffset_sec = 0;
  7. String T[10]={"-----",".----","..---","...--","....-",".....","-....","--...","---..","----."};
  8. void printLocalTime()
  9. {
  10.     struct tm timeinfo;
  11.     if (!getLocalTime(&timeinfo))
  12.     {
  13.         Serial.println("Failed to obtain time");
  14.         return;
  15.     }
  16.    
  17.    
  18.     if(timeinfo.tm_sec==0){
  19.        if(timeinfo.tm_hour>9){
  20.          Serial.println(T[timeinfo.tm_hour/10]);
  21.          Serial.println(T[timeinfo.tm_hour%10]);
  22.        }
  23.        else{
  24.          Serial.println(T[timeinfo.tm_hour]);
  25.         }
  26.     }
  27.     //Serial.println(&timeinfo, "%F %T %A"); // 格式化输出
  28. }
  29. void setup()
  30. {
  31.     Serial.begin(115200);
  32.     Serial.println();
  33.     WiFi.begin(ssid, password);
  34.     while (WiFi.status() != WL_CONNECTED)
  35.     {
  36.         delay(500);
  37.         Serial.print(".");
  38.     }
  39.     Serial.println("WiFi connected!");
  40.     // 从网络时间服务器上获取并设置时间
  41.     // 获取成功后芯片会使用RTC时钟保持时间的更新
  42.     configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  43.     printLocalTime();
  44.     WiFi.disconnect(true);
  45.     WiFi.mode(WIFI_OFF);
  46.     Serial.println("WiFi disconnected!");
  47. }
  48. void loop()
  49. {
  50.     delay(1000);
  51.     printLocalTime();
  52. }
复制代码


【显示时间】
为演示方便,利用摩斯密码每分钟显示一次小时+分钟时间。

FriJune-202206036669..png



  1. #include <WiFi.h>
  2. const char *ssid = "******";    //WIFI名称
  3. const char *password = "******"; //WIFI密码
复制代码

【演示视频】

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail