几个要点:
1、注册心知天气,进入控制台,添加产品,在免费版中可得到秘钥,放程序的“my_key”中。
2、程序开头,需修改秘钥和城市
3、目标服务器可写ip地址,也可写入网站
4、OLED屏的七引脚不要搞错
制作出来的实物图如下:
代码
#include <SPI.h>#include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <ESP8266WiFi.h> #include <ArduinoJson.h> //==== 需修改的地方:本程序第九行,第10行,第15行,第16行,第400行,接线方法见程序第17到24行 ==== // //============WiFi名称和密码================// const char* ssid = "WIFI名称"; const char* password = "WIFI密码"; //==========目标服务器网址和端口==============// const char* host = "116.62.81.138"; //apiseniversecom const uint16_t port = 80 ; //===============地区设置===================// String City = "城市名称";//城市 String My_Key = "心知天气秘钥";//禁止泄露 //===============OLED引脚===================// #define SCREEN_WIDTH 128 // OLED显示宽度,以像素为单位 #define SCREEN_HEIGHT 64 // OLED显示高度,以像素为单位 #define OLED_MOSI 12 //D6 #define OLED_CLK 13 //D7 #define OLED_DC 14 //D5 #define OLED_CS 15 //D8 #define OLED_RESET 16 //D0 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); //=================变量=====================// typedef struct { int Hour; int Minute; int Second; int Year; int Month; int Day; }STime; //时间日期结构体 typedef struct { int gws; int gwg; int dws; int dwg; int sds; int sdg; }dat; //最高温最低温和湿度的结构体 十位和个位 typedef struct { int zuigaowendu; int zuidiwendu; int shidu; int tianqitubiao; }tianqixinxi; //高温最低温和湿度的结构体 tianqixinxi day1,day2,day3; dat Nume; STime dTime,hTime; int OnTime = -1; //计数显示变量 10s时间 5s今明后天天气 bool DatFlag = true; //处理接收json数据的标志位 unsigned long getTime = 0; //获取网络天气和时间 5s请求一次 String inputString = ""; //接收到的数据 //请求URL String url = "/v3/weather/daily.json?key=" + My_Key +"&location=" + City + "&language=zh-Hans&unit=c&start=0&days=3"; //请求数据 String urlDat = "key=" + My_Key +"&location=" + City + "&language=zh-Hans&unit=c&start=0&days=3"; WiFiClient client; /************************************************************************************* * 使用取模软件:PCTOLCD 2002完美版 * 取模方式为:阴码,逐行式,顺序 * 字体:32X32 仿宋 * 图标:60X60 **************************************************************************************/ static const unsigned char PROGMEM qintian[] = { //晴,天 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x01,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFC,0x00,0x00, 0x00,0x1F,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00, 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00, 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00, 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00, 0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00, 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00, 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00, 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x3F,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xF0,0x00,0x00, 0x00,0x01,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFC,0x00,0x00,0x00, 0x00,0x00,0x01,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; static const unsigned char PROGMEM yintian[] = { //阴,天 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x0F,0x80,0x1F,0xFF,0xFF,0x80,0x00,0x00,0x00,0x3F,0xF0,0x3F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x7F,0xF8,0x7F,0xFF,0xFF,0xC0,0x00,0x00,0x00,0xFF,0xFC,0x7F,0xFF,0xFF, 0xE0,0x00,0x00,0x01,0xFF,0xFE,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x07,0xFF, 0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8, 0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x7F,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFC,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x03, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xF0,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; static const unsigned char PROGMEM duoyun[] = { //多,云 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xC0,0x00, 0x00,0x00,0x00,0x1F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xF8,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFC,0x00, 0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFE,0x00, 0x00,0x03,0x83,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x0F,0xE3,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x1F,0xFB,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFE,0x00, 0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00, 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00, 0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00, 0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00, 0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00, 0x03,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; static const unsigned char PROGMEM xiaoyu[] = { //小,雨 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFC,0x00,0x00, 0x00,0x00,0x00,0x07,0xFF,0xFE,0x00,0x00,0x00,0x00,0xF0,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x03,0xFE,0x1F,0xFF,0xFF,0x80,0x00,0x00,0x0F,0xFF,0x1F,0xFF,0xFF,0xC0,0x00, 0x00,0x1F,0xFF,0xBF,0xFF,0xFF,0xC0,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00, 0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00, 0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00, 0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00, 0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00, 0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; static const unsigned char PROGMEM zhongyu[] = { //中,雨 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xF8,0x00,0x00, 0x00,0x00,0x00,0x03,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0x00,0x00,0x00,0x01,0xF8,0x0F,0xFF,0xFF,0x80,0x00,0x00,0x07,0xFC,0x1F,0xFF,0xFF,0x80,0x00, 0x00,0x1F,0xFF,0x1F,0xFF,0xFF,0xC0,0x00,0x00,0x1F,0xFF,0xBF,0xFF,0xFF,0xC0,0x00,0x00,0x3F,0xFF,0xBF,0xFF,0xFF,0xE0,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00, 0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00, 0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00, 0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00, 0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00, 0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x01,0xE1,0xE0,0x00,0x00,0x00, 0x00,0x00,0x01,0xE1,0xE0,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; static const unsigned char PROGMEM dayu[] = { //大,雨 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xC0,0x00,0x00, 0x00,0x00,0x00,0x0F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF8,0x00,0x00,0x00,0x01,0xC0,0x3F,0xFF,0xFC,0x00,0x00,0x00,0x0F,0xF8,0x7F,0xFF,0xFC,0x00,0x00, 0x00,0x3F,0xFC,0x7F,0xFF,0xFE,0x00,0x00,0x00,0x7F,0xFE,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x7F,0xFE,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00, 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00, 0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00, 0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00, 0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x20,0x00,0x00,0x00, 0x00,0x00,0x0C,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x78,0x00,0x00,0x00, 0x00,0x00,0x1C,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; static const unsigned char PROGMEM jintian[][32] = { //今,明,后,天 {0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x12,0x10,0x21,0x08,0xC1,0x06,0x00,0x00,0x1F,0xF0,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00},//"今", {0x00,0x00,0x00,0xFC,0x7C,0x84,0x44,0x84,0x44,0x84,0x44,0xFC,0x7C,0x84,0x44,0x84,0x44,0x84,0x44,0xFC,0x7C,0x84,0x44,0x84,0x01,0x04,0x01,0x04,0x02,0x14,0x04,0x08},//"明", {0x00,0x10,0x00,0xF8,0x1F,0x00,0x10,0x00,0x10,0x00,0x1F,0xFE,0x10,0x00,0x10,0x00,0x10,0x00,0x17,0xF8,0x14,0x08,0x24,0x08,0x24,0x08,0x44,0x08,0x87,0xF8,0x04,0x08},//"后", {0x00,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06}//"天", }; static const unsigned char PROGMEM shidu[][32] = { //湿,度 {0x00,0x00,0x27,0xF8,0x14,0x08,0x14,0x08,0x87,0xF8,0x44,0x08,0x44,0x08,0x17,0xF8,0x11,0x20,0x21,0x20,0xE9,0x24,0x25,0x28,0x23,0x30,0x21,0x20,0x2F,0xFE,0x00,0x00},//"湿", {0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x3F,0xFC,0x22,0x20,0x22,0x20,0x23,0xE0,0x20,0x00,0x2F,0xF0,0x24,0x10,0x42,0x20,0x41,0xC0,0x86,0x30,0x38,0x0E}//"度", }; static const unsigned char PROGMEM tianqi[][32] = { //晴,阴,多,云,小,中,大,雨 {0x00,0x20,0x00,0x20,0x7B,0xFE,0x48,0x20,0x49,0xFC,0x48,0x20,0x4B,0xFE,0x78,0x00,0x49,0xFC,0x49,0x04,0x49,0xFC,0x49,0x04,0x79,0xFC,0x49,0x04,0x01,0x14,0x01,0x08},//"晴", {0x00,0x00,0x7D,0xFC,0x45,0x04,0x49,0x04,0x49,0x04,0x51,0xFC,0x49,0x04,0x49,0x04,0x45,0x04,0x45,0xFC,0x45,0x04,0x69,0x04,0x52,0x04,0x42,0x04,0x44,0x14,0x48,0x08},//"阴", {0x02,0x00,0x02,0x00,0x07,0xF0,0x08,0x20,0x38,0x40,0x04,0x80,0x03,0x40,0x0C,0x80,0x71,0xF8,0x02,0x08,0x0C,0x10,0x32,0x20,0x01,0x40,0x01,0x80,0x0E,0x00,0x70,0x00},//"多", {0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x02,0x00,0x04,0x00,0x04,0x00,0x08,0x40,0x10,0x20,0x20,0x10,0x7F,0xF8,0x20,0x08,0x00,0x08},//"云", {0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x11,0x10,0x11,0x08,0x11,0x04,0x21,0x04,0x21,0x02,0x41,0x02,0x81,0x02,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00},//"小", {0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00},//"中", {0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06},//*"大", {0x00,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x7F,0xFC,0x41,0x04,0x41,0x04,0x49,0x44,0x45,0x24,0x41,0x04,0x49,0x44,0x45,0x24,0x41,0x04,0x41,0x14,0x40,0x08}//*"雨", }; static const unsigned char PROGMEM num[][16] = { // 0,1,2,3,4,5,6,7,8,9,- {0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},//*"0", {0x00,0x00,0x00,0x08,0x38,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},//*"1", {0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x02,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00},//*"2", {0x00,0x00,0x00,0x3C,0x42,0x42,0x02,0x04,0x18,0x04,0x02,0x42,0x42,0x3C,0x00,0x00},//*"3", {0x00,0x00,0x00,0x04,0x0C,0x0C,0x14,0x24,0x24,0x44,0x7F,0x04,0x04,0x1F,0x00,0x00},//*"4", {0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x78,0x44,0x02,0x02,0x42,0x44,0x38,0x00,0x00},//*"5 {0x00,0x00,0x00,0x18,0x24,0x40,0x40,0x5C,0x62,0x42,0x42,0x42,0x22,0x1C,0x00,0x00},//*"6", {0x00,0x00,0x00,0x7E,0x42,0x04,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x00,0x00},//*"7", {0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},//*"8", {0x00,0x00,0x00,0x38,0x44,0x42,0x42,0x42,0x46,0x3A,0x02,0x02,0x24,0x18,0x00,0x00},//*"9", {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00}//*- }; static const unsigned char PROGMEM sheshidu[][32] = { // ℃,% {0x60,0x00,0x91,0xF4,0x96,0x0C,0x6C,0x04,0x08,0x04,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x08,0x00,0x0C,0x04,0x06,0x08,0x01,0xF0,0x00,0x00}, {0x00,0x00,0x18,0x04,0x24,0x08,0x24,0x10,0x24,0x20,0x24,0x40,0x24,0x80,0x19,0x00,0x02,0x60,0x04,0x90,0x08,0x90,0x10,0x90,0x20,0x90,0x40,0x90,0x00,0x60,0x00,0x00},//*"%", }; //====================================================数组END=======================================================================// void setup() { Serial.begin(9600); //检测OLED if(!display.begin(SSD1306_SWITCHCAPVCC)) { Serial.println(F("SSD1306 allocation failed"));//SSD1306分配失败 for(;;); // 不要继续,永远循环 } // 在屏幕上显示初始显示缓冲区的内容-Adafruit库 display.display();//送显示 delay(1000); // 等待1s display.clearDisplay();//关闭显示 display.setTextColor(WHITE);//设置字体颜色 display.setTextSize(1);//设置字体大小 display.setCursor(0,0);//设置光标 display.printf("connecting to %s\n",ssid);//在OLED上打印信息 display.display(); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) //等待连接 { delay(500); display.print("."); display.display(); } display.println(); display.println("WiFi connected"); display.print("IP: "); display.println(WiFi.localIP()); display.print("Please wait..."); display.display(); } void loop() { GET_Weather(); //获取天气 DateHandle(); //json处理 DisplayTime(); //显示时间 DisplayTianqi();//显示天气 } /************************************************** * 函数名称:tianqi_dat * 函数功能:将最低温度,最高温度,湿度的个位 十位分离 * 参数说明:dw 最低温,gw 最高温,sd 湿度 **************************************************/ void tianqi_dat(int dw,int gw,int sd) { Nume.dws = dw/10; Nume.dwg = dw%10; Nume.gws = gw/10; Nume.gwg = gw%10; Nume.sds = sd/10; Nume.sdg = sd%10; } /***************************************************** * 函数名称:显示天气函数 * 参数说明: * dday:第几天 * tq: 天气 * dw: 最低气温 * gw: 最高气温 * sd: 湿度 ******************************************************/ void display_tq(int dday,int tq,int dw,int gw,int sd) { tianqi_dat(dw,gw,sd); display.clearDisplay(); switch(dday) { case 0:display.drawBitmap(64,0,jintian[0],16,16,1);//今 break; case 1:display.drawBitmap(64,0,jintian[1],16,16,1);// break; case 2:display.drawBitmap(64,0,jintian[2],16,16,1);// break; } display.drawBitmap(80,0,jintian[3],16,16,1);//天 switch(tq) { case 0:display.drawBitmap(64,16,tianqi[0],16,16,1);//qin display.drawBitmap(0,0,qintian,60,60,1);//图标 break; case 4:display.drawBitmap(64,16,tianqi[2],16,16,1);//dy display.drawBitmap(80,16,tianqi[3],16,16,1);// display.drawBitmap(0,0,duoyun,60,60,1);//图标 break; case 9:display.drawBitmap(64,16,tianqi[1],16,16,1);//yin display.drawBitmap(0,0,yintian,60,60,1);//图标 break; case 13:display.drawBitmap(64,16,tianqi[4],16,16,1);//x display.drawBitmap(80,16,tianqi[7],16,16,1);// display.drawBitmap(0,0,xiaoyu,60,60,1);//图标 break; case 14:display.drawBitmap(64,16,tianqi[5],16,16,1);//z display.drawBitmap(80,16,tianqi[7],16,16,1);// display.drawBitmap(0,0,zhongyu,60,60,1);//图标 break; case 15:display.drawBitmap(64,16,tianqi[6],16,16,1);//d display.drawBitmap(80,16,tianqi[7],16,16,1);// display.drawBitmap(0,0,dayu,60,60,1);//图标 break; } display.drawBitmap(64,32,num[Nume.dws],8,16,1);//最低温 display.drawBitmap(72,32,num[Nume.dwg],8,16,1);//最低温 display.drawBitmap(80,32,num[10],8,16,1);//- display.drawBitmap(88,32,num[Nume.gws],8,16,1);//最g温 display.drawBitmap(96,32,num[Nume.gwg],8,16,1);//最g温 display.drawBitmap(108,32,sheshidu[0],16,16,1);//shehisdu display.drawBitmap(64,48,shidu[0],16,16,1);//湿 display.drawBitmap(80,48,shidu[1],16,16,1);//度 display.drawBitmap(96,48,num[Nume.sds],8,16,1);//湿度 display.drawBitmap(104,48,num[Nume.sdg],8,16,1);// display.drawBitmap(112,48,sheshidu[1],16,16,1);//baifenhao display.display(); } /************************************************** * 函数名称:DisplayZZXS * 函数功能:传入第几天将天气数据存入 * 参数说明:dday **************************************************/ void DisplayZZXS(int dday) { switch(dday) { case 0:display_tq(dday,day1.tianqitubiao,day1.zuidiwendu,day1.zuigaowendu,day1.shidu); break; case 1:display_tq(dday,day2.tianqitubiao,day2.zuidiwendu,day2.zuigaowendu,day2.shidu); break; case 2:display_tq(dday,day3.tianqitubiao,day3.zuidiwendu,day3.zuigaowendu,day3.shidu); break; } } /************************************************** * 函数名称:DisplayTianqi * 函数功能:显示天气 * 参数说明:无 **************************************************/ void DisplayTianqi() { if(OnTime > 1) { DisplayZZXS(OnTime-2); //Serial.println("打印天气中"); } } /************************************************** * 函数名称:DisplayTime * 函数功能:显示时间 * 参数说明:无 **************************************************/ void DisplayTime() { if(OnTime ==0 or OnTime == 1) { display.clearDisplay();//清除缓冲区 display.setTextSize(2);//设置字体大小 display.setCursor(32,0);//设置光标 display.print("城市名称(拼音)");//显示地区 //display.setCursor(16,20);//设置光标 //display.printf("%d:%d:%d",dTime.Hour,dTime.Minute,dTime.Second); display.setCursor(34,20);//设置光标 display.printf("%d:%d",dTime.Hour,dTime.Minute);//时间 display.setCursor(4,40);//设置光标 display.printf("%d.%d.%d",dTime.Year,dTime.Month,dTime.Day);//日期 display.display(); } } /************************************************** * 函数名称:GET_Weather * 函数功能:http访问获取天气数据 * 参数说明:无 **************************************************/ void GET_Weather() { if((millis() - getTime > 5000))//10s { getTime = millis(); //Serial.print("connecting to "); if (!client.connect(host,port)) { Serial.println("服务器连接失败"); return; } //Serial.print("Requesting URL: "); // 发送请求报文 client.print(String("GET ") + url + " HTTP/1.1\r\n" + //请求行 请求方法 + 请求地址 + 协议版本 "Host: " + host + "\r\n" + //请求头部 "Connection: close\r\n" + //处理完成后断开连接 "\r\n" + //空行 urlDat); //请求数据 delay(100); while(client.available()) //接收数据 { String line = client.readStringUntil('\r'); inputString += line; } // Serial.println(inputString); client.stop(); //断开与服务器连接以节约资源 DatFlag = true; // Serial.println(inputString); } } /************************************************** * 函数名称:DateHandle * 函数功能:将获取到的数据进行处理 * 参数说明:无 **************************************************/ void DateHandle() { if(DatFlag) { DatFlag = false; int t = inputString.indexOf("Date:");//找时间 int m = inputString.lastIndexOf("GMT"); String inputTime = inputString.substring(t, m + 1); //把含有时间的数据取出进行处理 int miao = inputTime.lastIndexOf(":"); hTime.Hour = (inputTime.substring(miao-5, miao-3)).toInt(); hTime.Minute = (inputTime.substring(miao-2, miao)).toInt(); hTime.Second = (inputTime.substring(miao+1, miao+3)).toInt(); //Serial.println(inputTime); int jsonBeginAt = inputString.indexOf("{"); //判断json数据完整性 int jsonEndAt = inputString.lastIndexOf("}"); if (jsonBeginAt != -1 && jsonEndAt != -1) { //净化json数据 inputString = inputString.substring(jsonBeginAt, jsonEndAt + 1);//取得一个完整的JSON字符串 processMessage();//对数据进行处理 //Serial.println(inputString); inputString=""; } } } /************************************************** * 函数名称:processMessage * 函数功能:将json数据取出 * 参数说明:无 **************************************************/ void processMessage() { const size_t capacity = JSON_ARRAY_SIZE(1) + JSON_ARRAY_SIZE(3) + JSON_OBJECT_SIZE(1) + JSON_OBJECT_SIZE(3) + JSON_OBJECT_SIZE(6) + 3*JSON_OBJECT_SIZE(13) + 760; DynamicJsonDocument doc(capacity); deserializeJson(doc, inputString); JsonObject results_0 = doc["results"][0]; JsonObject results_0_location = results_0["location"]; const char* results_0_location_name = results_0_location["name"]; // "嘉兴" JsonArray results_0_daily = results_0["daily"]; JsonObject results_0_daily_0 = results_0_daily[0]; const char* results_0_daily_0_date = results_0_daily_0["date"]; // "2019-12-21"==========================今天日期 const char* results_0_daily_0_text_day = results_0_daily_0["text_day"]; // "中雨"=========================白天天气 const char* results_0_daily_0_code_day = results_0_daily_0["code_day"]; // "14"==========================图标编号 const char* results_0_daily_0_text_night = results_0_daily_0["text_night"]; // "中雨"=====================晚上天气 const char* results_0_daily_0_code_night = results_0_daily_0["code_night"]; // "14"=======================图标编号 const char* results_0_daily_0_high = results_0_daily_0["high"]; // "11"===================================最高气温 const char* results_0_daily_0_low = results_0_daily_0["low"]; // "9"======================================最低气温 const char* results_0_daily_0_wind_direction = results_0_daily_0["wind_direction"]; // "东北"==============风向 const char* results_0_daily_0_wind_direction_degree = results_0_daily_0["wind_direction_degree"]; // "45"==度数 const char* results_0_daily_0_wind_speed = results_0_daily_0["wind_speed"]; // "25.20"=====================速度 const char* results_0_daily_0_wind_scale = results_0_daily_0["wind_scale"]; // "4"=========================风标 const char* results_0_daily_0_humidity = results_0_daily_0["humidity"]; // "94"============================湿度 JsonObject results_0_daily_1 = results_0_daily[1]; const char* results_0_daily_1_date = results_0_daily_1["date"]; // "2019-12-22" const char* results_0_daily_1_text_day = results_0_daily_1["text_day"]; // "小雨" const char* results_0_daily_1_code_day = results_0_daily_1["code_day"]; // "13" const char* results_0_daily_1_text_night = results_0_daily_1["text_night"]; // "阴" const char* results_0_daily_1_code_night = results_0_daily_1["code_night"]; // "9" const char* results_0_daily_1_high = results_0_daily_1["high"]; // "12" const char* results_0_daily_1_low = results_0_daily_1["low"]; // "8" const char* results_0_daily_1_precip = results_0_daily_1["precip"]; // "" const char* results_0_daily_1_wind_direction = results_0_daily_1["wind_direction"]; // "西" const char* results_0_daily_1_wind_direction_degree = results_0_daily_1["wind_direction_degree"]; // "270" const char* results_0_daily_1_wind_speed = results_0_daily_1["wind_speed"]; // "25.20" const char* results_0_daily_1_wind_scale = results_0_daily_1["wind_scale"]; // "4" const char* results_0_daily_1_humidity = results_0_daily_1["humidity"]; // "91" JsonObject results_0_daily_2 = results_0_daily[2]; const char* results_0_daily_2_date = results_0_daily_2["date"]; // "2019-12-23" const char* results_0_daily_2_text_day = results_0_daily_2["text_day"]; // "小雨" const char* results_0_daily_2_code_day = results_0_daily_2["code_day"]; // "13" const char* results_0_daily_2_text_night = results_0_daily_2["text_night"]; // "小雨" const char* results_0_daily_2_code_night = results_0_daily_2["code_night"]; // "13" const char* results_0_daily_2_high = results_0_daily_2["high"]; // "12" const char* results_0_daily_2_low = results_0_daily_2["low"]; // "11" const char* results_0_daily_2_precip = results_0_daily_2["precip"]; // "" const char* results_0_daily_2_wind_direction = results_0_daily_2["wind_direction"]; // "东北" const char* results_0_daily_2_wind_direction_degree = results_0_daily_2["wind_direction_degree"]; // "59" const char* results_0_daily_2_wind_speed = results_0_daily_2["wind_speed"]; // "34.20" const char* results_0_daily_2_wind_scale = results_0_daily_2["wind_scale"]; // "5" const char* results_0_daily_2_humidity = results_0_daily_2["humidity"]; // "86" const char* results_0_last_update = results_0["last_update"]; // "2019-12-21T17:23:52+08:00" String riqi = results_0_last_update; //将日期取出处理 int nian = riqi.lastIndexOf("T"); hTime.Year = (riqi.substring(nian-10, nian-6)).toInt(); hTime.Month = (riqi.substring(nian-5, nian-3)).toInt(); hTime.Day = (riqi.substring(nian-2, nian)).toInt(); OnTime++; //显示标志位 0,1,2显示时间 3显示今天天气 4显示明天天气 5显示后天天气 OnTime%=5; dTime.Hour = hTime.Hour+8; dTime.Minute = hTime.Minute; dTime.Second = hTime.Second; dTime.Year = hTime.Year; dTime.Month = hTime.Month; dTime.Day = hTime.Day; day1.tianqitubiao = atoi(results_0_daily_0_code_day);//获取今天天气信息 day1.zuigaowendu = atoi(results_0_daily_0_high); day1.zuidiwendu = atoi(results_0_daily_0_low); day1.shidu = atoi(results_0_daily_0_humidity); day2.tianqitubiao = atoi(results_0_daily_1_code_day); day2.zuigaowendu = atoi(results_0_daily_1_high); day2.zuidiwendu = atoi(results_0_daily_1_low); day2.shidu = atoi(results_0_daily_1_humidity); day3.tianqitubiao = atoi(results_0_daily_2_code_day); day3.zuigaowendu = atoi(results_0_daily_2_high); day3.zuidiwendu = atoi(results_0_daily_2_low); day3.shidu = atoi(results_0_daily_2_humidity); }
复制代码