Arduino esp8266网络时钟 苏宁时间api

构思: 采用esp8266芯片 获取网络上的时间API接口 获取时间

元器件清单:

四位数码管显示模块 

 

D1 UNO R3开发板

蜂鸣器

触摸按钮

 

#include <TM1637.h>
#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>

#define ssid "A"
#define psd "11111111"

#define api1 "http://quan.suning.com/getSysTime.do"
#define CLK D5  //显示模块
#define DIO D4   
#define BT D3	//按钮
#define Call D6 //蜂鸣器

String getTime;//定义时间数据
int timeShi1;
int timeShi2;
int timeFen1;
int timeFen2;
int timeLight = 1;
TM1637 tm1637(CLK, DIO);//初始化显示模块


void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, psd);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println(WiFi.localIP());
//等待wifi(上)
  tm1637.init();
  tm1637.set(1);
  tm1637.point(POINT_ON);
//初始化 set设置亮度 point是模块上的冒号
  pinMode(BT, INPUT);
  pinMode(Call, OUTPUT);
//设置按钮 BT
//设置蜂鸣器 Call
}

void loop() {
  delay(500);//每0.5秒重复一次
    
  digitalWrite(Call, LOW);//初始化蜂鸣器
    
  setTime();//刷新显示模块上的时间
  
  

  int btState = digitalRead(BT);//获取按钮的值
  if (btState == HIGH) {
    changeLight();//修改亮度
  }
    
  callWhile();//判断是否在整点
  /*
  	每当整点的时候 让蜂鸣器响
  	而每次loop 刷新的时候 会等待0.5秒 从而达到响多次 与响的时间控制
  
  */
}

void callWhile() {//判断是否整点并让蜂鸣器响
  int second1 = getOther(getTime, 58);
  int second2 = getOther(getTime, 59);
  if ((timeShi1 == 0 && timeShi2 <= 9) || (timeShi1 == 2 && timeShi2 > 1)   ) {

    return;
  } else if (timeFen1 == 0 && timeFen2 == 0 && second1 == 0 && second2 < 2) {
    digitalWrite(Call, HIGH);
  }



}



}

void changeLight() {//修改亮度
  if (timeLight == 6) {
    timeLight = 1;
  }
  timeLight += 1;
  tm1637.set(timeLight);
  setTime();
}

void setTime() {//设置显示模块上的时间
  getTime = http_post();
  timeShi1 = getOther(getTime, 54);
  timeShi2 = getOther(getTime, 55);
  timeFen1 = getOther(getTime, 56);
  timeFen2 = getOther(getTime, 57);

  tm1637.display(0, timeShi1);
  tm1637.display(1, timeShi2);
  tm1637.display(2, timeFen1);
  tm1637.display(3, timeFen2);

  Serial.print(timeShi1);
  Serial.print(timeShi2);
  Serial.print(timeFen1);
  Serial.println(timeFen2);
}

String  http_post() {//网络请求api时间数据
  WiFiClient client;
  HTTPClient http;
  http.begin(api1);
  int httpCode = http.POST(" ");
  if (httpCode == HTTP_CODE_OK) {
    return http.getString();
  }
  http.end();
}
/*
 {"sysTime2":"2021-10-19 15:23:55","sysTime1":"20211019152355"}
 下标
  年:46——49
  月:50——51
  日:52  53
  时:54  55
  分:56  57
  秒:58  59
 

*/
int getOther(String b2, int index) {//根据上面 对获取的api进行数据拆分
  return b2.charAt(index) - 48;
}

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Arduino ESP8266天气时钟是一种基于ArduinoESP8266模块的智能时钟,可以通过连接互联网获取实时天气信息,并在时钟上显示。它可以帮助人们更方便地了解当地的天气情况,提高生活质量。同时,它也是一种DIY电子制作项目,可以让人们学习和掌握ArduinoESP8266的使用方法。 ### 回答2: Arduino ESP8266天气时钟是一种基于ArduinoESP8266模块的智能时钟,它可以连接网络获取当前时间和天气信息,并在液晶屏幕上显示。这款时钟的核心是Arduino Nano和ESP8266模块,它们可以相互配合,实现各种智能应用。 在Arduino ESP8266天气时钟上,我们可以设置城市名和天气ID,以获取该城市的当前天气信息。这些信息可以通过连接网络服务器获取,然后通过串口通信传输到液晶屏幕上显示。同时,该时钟还可以根据自己的设置,调整亮度和字体大小,以适应不同场合的使用需求。 在实现Arduino ESP8266天气时钟的过程中,需要进行编程设计和电路连接,这需要一些基础的电子和编程知识。同时,需要了解ArduinoESP8266模块的接口和使用方法,以保证程序的正常运行和稳定性。 总之,Arduino ESP8266天气时钟是一款功能强大、易于使用的智能时钟,在家庭、办公室、商业等场合都有广泛的应用前景。它的出现将会带来更加高效和便捷的生活和工作体验,为人们带来便利和潜在的经济效益。 ### 回答3: Arduino ESP8266天气时钟是一种结合了天气预报功能的时钟,通过连接WiFi并访问网络天气预报数据,可以实现自动更新天气信息,并根据天气情况改变显示内容、颜色等,具有实用性和趣味性。该项目需要用到Arduino开发板和ESP8266无线模块,并需要编写相应的程序进行控制和显示。 程序设计方面,需要结合开发板和无线模块的特点,采用相应的库函数进行编程。主要包括WiFi连接、解析JSON数据、显示和显示效果控制等。通过连接WiFi获取天气预报数据,可以实现实时和准确的天气预报。实现智能化的功能,让用户更加便捷地查看天气状况。 同时,为了增加趣味性和美观性,可以采用LED点阵或者OLED屏幕来进行显示,并根据天气情况改变显示颜色、形状等,增加时钟的视觉效果和趣味性。另外,可以通过添加其他的传感器,如温度传感器、湿度传感器、气压传感器等,来实现更加全面的环境监测和智能化功能。 总之,Arduino ESP8266天气时钟是一种有趣实用的物联网应用,可应用于家庭、办公室等不同场景中,为用户提供时钟、天气预报等功能,同时也是ArduinoESP8266无线模块的优秀实践。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值