2019-11-21 22:00:56 [显示全部楼层]
1949浏览
查看: 1949|回复: 1

[入门教程] mPython写的第一个案例——心知天气

[复制链接]
mPython写的第一个案例——心知天气
一、下载mPython,安装天气扩展模块
13109483-df72-4007-bc67-ed683b98b31e.png

2、增加天气模块
安装完软件后,打开,点击左侧命令中的“扩展”
,再点最下方的“添加”
8821fbde-77ab-4ed5-b7a2-8c2d144a1114.png

在新对话框中,在“全部”标签的下面有两个扩展,选择“应用扩展”,从里面找到天气进行“加载”。

d298c9e2-aa6d-4c75-914f-028c5cdb97bb.png

3、查看天气模块

c5179c95-33c2-47d2-977d-0970a65cc2bf.png

二、制作第一个天气案例——本地天气
1、要获取天气的情况,一定要通过网络获得,首先要添加“Wi-Fi”模块,并填写帐号和密码

7c356175-c618-46a7-a841-02399202ed91.png

WIFI是否连接成功,经常影响案例是否顺利的重要保证,因此我们要做一个测试或者让其连接成功进行显示。程序和掌控显示如下:

6f1aa769-5477-4659-95d2-2eb45458ef89.png

6d69c54a-a810-42fd-bd70-1563dd285a6d.png

做过WIFI连接的,可忽视以上内容,哈哈。
2、添加天气模块

dfa60269-de9a-43f0-b7ab-d2e95da4b2e4.png

点击“天气实况”右侧的三角,弹出下拉菜单,可知道心知天气的内容一共包括三项:天气实况,3天天气预报,6项生活指数等内容。下面先做一下天气实况程序显示。
在测试时发现几个问题:
一是要显示的内容与天气模块中的内容要一致,如:天气模块选择“天气实况”不能在掌控显示“今天的天气情况”。举例:如下面程序中,第四行显示“今天的最高温度”与上面的“天气实况”不一致,这样使用是错误的。

3ad9d670-a3d6-43c1-b1eb-ab9795280f49.png

二是获取“天气API私钥”,
打开心知天气网址:https://www.seniverse.com/
进行注册,登陆,选择产品,打开“查看API文档"

87d8393c-2088-4b26-a0b1-50e77663b28a.png

在API接口文档中,查看你的API密钥

0470b5b6-7463-4f5c-ad16-25ce59c9156e.png

免费版目前支持的项目:
国内 370 个主要城市
天气实况,包括天气现象文字、代码和气温 3 项数据
未来 3 天天气预报,包括白天天气现象文字及代码、晚间天气现象文字及代码、当天最高温度和最低温度、风向风速
6 项基本类生活指数,包括穿衣、紫外线强度、洗车、旅游、感冒、运动指数
三是地理位置:本地如果不是市一级的行政所地,识别不了,如果做案例,需要选择一个城市。
从天气模块中找到要显示的内容:目前能进行显示的天气模块一共有四个,根据上面的问题分析很容易选择需要的积木。第一个案例如下:今天的天气实况

50bca5be-4fd0-4bbf-bd96-0b6b3935c268.png

看到掌控上现实了天气情况,心情还是比较激动,虽然内容都在一侧显示,并且数据单薄,感觉不是很美观,下面就为天气情况美化一下。

9b6d3a95-4c5d-4bf9-aa02-8d25bbc852a9.png

3、美化一下显示内容:
美化分为两个方面,一个是显示内容的美化,二是显示内容位置的美化。
一显示内容的美化,因为天气显示模块的数据少,可显示的有效数据并不多,我们可以根据需要进行有效的选择,

第二个任务:
1、今天的天气(三天天气预报)

c9098953-0694-4a3a-a485-1066dafa8e52.png

2、三天的天气预报
需要掌控板显示的内容,作如下设计:

城市或日期        白天天气现象        当天最高温度        当天最低温度
今天
明天
后天

所以需要对显示文本模块做设计,显示模块有两个,我们根据自己的习惯就使用。

a58d5ff7-a3e6-4ee4-a760-00ab2dc131e2.png

带坐标的文本输入比较好用,只要计算好文本显示的坐标就好,用行显示比较麻烦,我们用这个模块解决今天的美化问题。看上面的表格,我们每行要输入四个文本,需要用到文本连接符,就可以解决,OLED屏一行一般就能输入十个汉字,过多拥挤,过少都是左对齐,没有平均分布,如果想词与词之间有空隙,我用文本输入模块内,加空格去调整。这个办法虽然麻烦,但不失为一种解决的方法。

1edfeaf7-0316-4dd4-be54-51181f108d25.png

掌控显示

635b3c6a-1b54-4335-9ab4-53bf3f2a27c9.png

第三个任务:多个城市天气显示
我们经常有出差或游玩多地的习惯,如何让我们的掌控掌握多地的天气,为我们生活提供方便。
多城市天气显示,就需要城市切换,控制城市切换的方式有好多,比较稳定的还是按键好用,如切换
三天,每天显示几个城市;或者每按一次键,切换一个城市显示三天的天气,一般后者使用较多。
需要解决的问题:一是按键切换程序的设计;二是程序过长,需要分解,采用调用函数模块的方法。
1、首先我们从高级里拖出函数模块,并命名"tianqi",英文不好,我一般采用拼音模式。

aa09465e-f2b4-4b3d-8a2a-5c7dcfcff732.png

我把上一个案例的三天天气程序拖入到函数中,在这个案例中因为要显示多个城市的天气变化,而天气变化的程序是不变的,需要变化的就是城市,如何解决城市的变化,我们一般采用的是用变量代替城市,如果不用变量,就需要采用顺序结构,这样写的程序量会增大,也容易出错。在函数模块中是可以设置变化的。如图,点击蓝色的设置开关。

b24e5d54-e1b8-4f4e-bf22-f30735d39160.png

把变量拖入程序块中,并改名“chengshi",然后点击蓝色的设置开关

4bd8a70e-5854-49df-b2e5-205d8b9cbaf0.png

打开左别的变量,填写到天气模块的地理位置当中。
7d4915d2-88d0-4196-bcce-f0432c02ab78.png

大家发现城市显示天气的函数程序比较长,我们可以采用折叠的办法把它最小化,不影响使用。如图:右击函数模块,在弹出的菜单中选择“折叠块”,会变成如下效果。

cf0f4f2c-0355-420b-8958-1a0425b7c0ab.png

是不是美观了很多。

5e9ea51a-ce79-4d39-ae63-55cfeac1cf25.png

2、城市的变量有了,城市的天气程序也有了,我们需要显示哪几个城市,城市如何体现在程序中,这里我们采用列表的方式,把需要显示天气的城市列出来,如果需要增减城市或者替换城市也可以列表中操作。
在高级中点击列表,选择“初始化列表”,这是一个嵌入模块。不能独立使用,再从列表中拖出定义列表,并进行组合。为了区分多个列表,我们给列表起一个名字,如“CS”,不要与其他的变量等重名。
5159173e-527a-4369-9d90-87de9adabd3d.png
列表有了如何添加城市地址呢?这个地址来来源于天气模块的地理位置模块,把它拖过来就可以了,需要几个我们复制几个,如果列表上不够位置,就向上面函数添加变量的哪样重复操作即可。

18934181-b2a9-4216-9c66-96f60dea5265.png

3、如何城市切换:
这确实是一个难题,开始时确定用按键来切换列表中的城市,如何做呢?我们先把,按键执行模块拖出来。

7e1eae2c-4936-4dc3-8869-7ffa1553384b.png

如何切换列表中的城市名称,我们需要确定,城市列表其实就是一个数据列表:如0张家口, 1北京,2天津,3上海,我们只要把列表中隐涵的数字表达出来,就可以来切换城市了。如何表达,变化的数字我们一般用变量来表达,我们新建一个变量BH(可以任意起,容易记就可以),当我们按下A键时,让变量增加1。新问题又出来了,变量如何去体现城市的变换呢,熟悉列表的人就不用说了,不熟悉的,我们列表中拖出一个嵌入模块:把变量依次填入,不理解的读一读,就应该理解了。哈哈





(CS是城市列表,BH是城市切换项)
现在我们再把定义的函数"tianqi"拖出来,进行组合就可以了,如图



这时列表增加,如果列表增加到头,怎么办?当然可以重头再来,现在我们先设计一个简单的,按B键倒着来。如图



说了这么多,把最重要的主程序给忘记了,整体截图。



好多地城市天气,做好了。
还有第四个案例,生活指数的,留到下次写。
多地城市天气掌控视频连接:


226d77ee-0f5b-41e5-ab2e-6680e6699182.png

mPython写的第一个案例——心知天气.pdf

2.95 MB, 下载次数: 84

gada888  版主

发表于 2019-11-25 14:30:23

好多显示天气的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2023 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail