【Beetle ESP32-C3试用(二)】摩斯码报时
本帖最后由 云天 于 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={"-----",".----","..---","...--","....-",".....","-....","--...","---..","----."};
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);
Serial.println(T);
}
else{
Serial.println(T);
}
}
//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密码
【演示视频】
https://www.bilibili.com/video/BV1xt4y1W71J?share_source=copy_web
页:
[1]