NTP 网络对时求助M5Stack(ESP32)-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1921|回复: 1

[未解决] NTP 网络对时求助M5Stack(ESP32)

[复制链接]
发表于 2021-2-12 21:28 | 显示全部楼层 |阅读模式
本帖最后由 botao258 于 2021-2-12 21:37 编辑

折腾M5Stack做NTP时钟显示时, 菜鸟初学,找了一份代码,可不知道怎么能分别获取到各个值(时间,日期,星期),用于每个值在指定的地方显示,用M5.Lcd.drawNumber(long long_num, int32_t poX, int32_t poY); M5.Lcd.drawChar(int16_t uniCode, int32_t x, uint16_t y, uint8_t font); 显示在屏幕上。 用M5.Lcd.println() 能整体能打印出来, 但怎么能拆开,求指教:
  1. #include <WiFi.h>
  2. #include "time.h"
  3. #include <M5Stack.h>

  4. const char* ssid     = "新年快乐";
  5. const char* password = "牛年大吉恭喜发财";

  6. const char* ntpServer = "pool.ntp.org";
  7. const long  gmtOffset_sec = 28800;
  8. const int   daylightOffset_sec = 3600;

  9. void setup(){
  10.   //Serial.begin(115200);
  11.   
  12.   M5.begin();
  13.   M5.Lcd.fillScreen(TFT_BLACK);
  14.   M5.Lcd.setTextSize(2);
  15.   M5.Lcd.setTextColor(TFT_YELLOW, TFT_BLACK);
  16.   
  17.   M5.Lcd.print("Connecting to: ");
  18.   M5.Lcd.print(ssid);
  19.   
  20.   // Connect to Wi-Fi
  21.   WiFi.begin(ssid, password);
  22.   
  23.   while (WiFi.status() != WL_CONNECTED) {
  24.     delay(500);
  25.     M5.Lcd.print(".");
  26.   }
  27.   M5.Lcd.print("");
  28.   M5.Lcd.print("WiFi connected.\r\n");
  29.   
  30.   // Init and get the time
  31.   configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  32.   printLocalTime();

  33.   //disconnect WiFi as it's no longer needed
  34.   WiFi.disconnect(true);
  35.   WiFi.mode(WIFI_OFF);
  36. }

  37. void loop(){
  38.   delay(1000);
  39.   printLocalTime();
  40. }

  41. void printLocalTime(){
  42.   struct tm timeinfo;  
  43.    
  44.   if(!getLocalTime(&timeinfo)){
  45.     M5.Lcd.print("Failed to obtain time");
  46.     return;
  47.   }

  48.   M5.Lcd.setTextColor(TFT_PINK);
  49. M5.Lcd.println(&timeinfo, "%A %B %d %Y %H:%M:%S");

  50. }
复制代码


 楼主| 发表于 2021-2-13 10:37 | 显示全部楼层
找到方法了,可以这样:
  char timeHour[3];    //时
  strftime(timeHour, 3, "%H", &timeinfo);
  char timeMinute[3];  //分
  strftime(timeMinute, 3, "%M", &timeinfo);
  char timeSecond[3];  //秒
  strftime(timeSecond, 3, "%S", &timeinfo);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 12:49 , Processed in 0.067696 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表