NTPClient获取网络时间

刚学习了NTPClient获取网络时间,借鉴别人的方法加以修改,本人这次采用38译码器用数码管显示时间 

/**
 * @file main.cpp
 * @author your name (you@domain.com)
 * @brief  获取网络时间,用数码管显示
 * @version 0.1
 * @date 2021-12-10
 * 
 * @copyright Copyright (c) 2021
 * 
 */
#include <NTPClient.h>
#include <WiFi.h>
#include <WiFiUdp.h>

const char *ssid     = "vivo S7";
const char *password = "s12345678";
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 3600, 60000);
 
int  a= 0;
int  b= 1; 
int  c= 2;
int  d= 3;
int  e= 4;
int  f= 5;
int  g= 6;
int  dp=7;
int delayTime = 45;    //延迟时间ms
int led1 = 10;  //GPIO2
int led2 = 11;  //GPIO3,最低点位还是0.3V,不过测试后发现能控制LED
int led3 = 12;
static int minu = 0,hours=0,sec=0;

int light[12][8] = 
{
  /**
   * @brief 0~9,-
   * 段码
   */
    //a  b  c  d  e  f  g  dp
    {1, 1, 1, 1, 1, 1, 0, 0},   
    {0, 1, 1, 0, 0, 0, 0, 0},    
    {1, 1, 0, 1, 1, 0, 1, 0},    
    {1, 1, 1, 1, 0, 0, 1, 0},     
    {0, 1, 1, 0, 0, 1, 1, 0},     
    {1, 0, 1, 1, 0, 1, 1, 0},   
    {1, 0, 1, 1, 1, 1, 1, 0},   
    {1, 1, 1, 0, 0, 0, 0, 0},     
    {1, 1, 1, 1, 1, 1, 1, 0},    
    {1, 1, 1, 1, 0, 1, 1, 0},
    {0, 0, 0, 0, 0, 0, 1, 0},
    {0, 0, 0, 0, 0, 0, 0, 0},   
};

void lightControl(int i)
{
  //i只能取0~10
  //位码
  digitalWrite(a,light[i][0]);
  digitalWrite(b,light[i][1]);
  digitalWrite(c,light[i][2]);
  digitalWrite(d,light[i][3]);
  digitalWrite(e,light[i][4]);
  digitalWrite(f,light[i][5]);
  digitalWrite(g,light[i][6]);
  digitalWrite(dp,light[i][7]);
  delayMicroseconds(delayTime); //不延时也是可以的,但是变化比较快
}

void digitalControl(int A,int B,int C)
{
  int j = 0; 
  for(j=0;j<8;j++)
  {
    switch(j)
    {
      case 0:digitalWrite(led1,0); digitalWrite(led2,0); digitalWrite(led3,0); lightControl(A/10);break;
      case 1:digitalWrite(led1,1); digitalWrite(led2,0); digitalWrite(led3,0); lightControl(A%10);break;
      case 2:digitalWrite(led1,0); digitalWrite(led2,1); digitalWrite(led3,0); lightControl(10);break;
      case 3:digitalWrite(led1,1); digitalWrite(led2,1); digitalWrite(led3,0); lightControl(B/10);break;
      case 4:digitalWrite(led1,0); digitalWrite(led2,0); digitalWrite(led3,1); lightControl(B%10);break;
      case 5:digitalWrite(led1,1); digitalWrite(led2,0); digitalWrite(led3,1); lightControl(10);break;
      case 6:digitalWrite(led1,0); digitalWrite(led2,1); digitalWrite(led3,1); lightControl(C/10);break;
      case 7:digitalWrite(led1,1); digitalWrite(led2,1); digitalWrite(led3,1); lightControl(C%10);break;
    } 
    delayMicroseconds(45);
    lightControl(11);//消影
  }
}
void setup() 
{
  pinMode(a,OUTPUT);
  pinMode(b,OUTPUT);
  pinMode(c,OUTPUT);
  pinMode(d,OUTPUT);
  pinMode(e,OUTPUT);
  pinMode(f,OUTPUT);
  pinMode(g,OUTPUT);
  pinMode(dp,OUTPUT);
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);

  WiFi.begin(ssid, password);
  while ( WiFi.status() != WL_CONNECTED ) 
  {
    delay ( 500 );
  }
  timeClient.begin();
  timeClient.setTimeOffset(8*60*60);
}


void loop() 
{
   timeClient.update();
   hours=timeClient.getHours();
   minu = timeClient.getMinutes();
   sec=timeClient.getSeconds();
   Serial.println(hours);
   Serial.println(minu);
   Serial.println(sec);
   digitalControl(hours,minu,sec);
}

烧录后效果

若原作者对此不满请私聊删除。

转载连接:用8266学习单片机-7-数码管实现:网络时钟-NTPClient-取网络时间并用串口打印_Kearney-CSDN博客_ntpclient.h

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值