上期完成wifi获取数据之后,就打算将天气数据和时间信息输送到屏幕上显示,这次将程序融合写好。
初步打算是将拉取信息的程序做成子函数,富有时间后做成库函数增加可读性。
任务分步:
0.测试屏幕
1.测试wifi程序
2.将数据植入变量
3.由单片机自己跑UI与时间。
0.屏幕连线至wifiduino:cs→D5;dc→d4,;led→3.3v;
1.Assistant | ArduinoJson 6 找了半天才找到当时解析天气json格式的程序,成功从一串json中提取温度信息;
2.测试时间api仿照天气api的格式访问时间api但是出现400,访问失败,就将以前http的方式程序拷贝过来,一样的wifi启动,访问用了#include <ESP8266HTTPClient.h>,成功了以后不太满足整体不统一,仔细研究了client的使用方式后,发现在第二栏具体网址时最前面的少了“/”符号。添加进去后成功访问api!并测试了时间api的解析,成功!
3.接下来就是将信息放入tft屏显示出来,首先得有一个tft屏的UI显示。基础程序完成。
4.接下来就是将所有程序整合在一起,在融合wifi程序和显示程序时遇到了问题,如果只是把所有程序都放在SETUP与LOOP里共用变量的话是没有问题的,但是将获取网络天气的程序单独使用子函数封装起来后,发现数据传递不行。根据网上查到的资料一般来说实参是单向像形参传输数据的。但是我们的需求时在子函数里获得数据要反哺到主程序中,这种可以称之为函数执行后对实参数据进行修改。通过学习成功编写了一个例子:
#include <stdio.h>
void get(int *hour){
*hour=7;
}
int main()
{
int mhour;
get(&mhour);
printf("%d",mhour);
return(0);
}