解决一个学生题目:使用microbit作为气温计
本帖最后由 pATAq 于 2018-6-15 20:12 编辑# 前言
原创文章,转载引用务必注明链接。水平有限,如有疏漏,欢迎指正。
本文缘起一个群友学生家长问我一个作业,
> **作业要求:**将温度转化为数字并且用led的数量显示
>
> *比如:*前两排代表十位数,之后两排代表个位数,最后一排代表正负。
>
> **及格标准:**能把代表温度的两位数分离为两个一位数并在led屏幕上显示出来。
## 1、需求及难点分析
想一想现在的初中生作业挺厉害哇,我那时候初中还是win98/dos系统,哪有这些东西玩。想了一下,主要涉及温度获取——数据拆分——生成矩阵——led显示。初步使用MakeCode来完成,最后把各部分组合起来就行了。
### 需要处理的知识:
* 读取温度值,mb获取的是两位整数且无小数部分(超过99℃的估计mb已经不能运行了)。根据省电原则,若低于0℃则第5行(y=5)全亮,并且温度值取反|取绝对值
* 将温度的绝对值赋值给temp,分别取得其高位和低位值,MakeCode里没有直接提供取整只有取余函数,需要我们自己转换一下或者用JavaScript写。
* 每行5个灯,适配了10进制,但是大于5的就要进行处理到下一行
* 使用for循环点灯,类似于电视的逐行扫描
代码如下:
https://makecode.microbit.org/_LT0gR5Wr24Vh
![](https://mc.dfrobot.com.cn/forum.php?mod=image&aid=50377&size=300x300&key=a5706a179debfe10&nocache=yes&type=fixnone)
### 需要注意的点
* 每次调用温度函数都会进行一次读取,所以我们读取一次进行判断
* 不要调用`基本`里面的`显示LED`来显示一行并试图拼接,会覆盖剩下的led点亮
* 自定义实现取整函数要注意 % 10以获得个位数
* 超过5的值要记得减去5在次行显示
## 2、总结
* 使用Blocks拖拽真的非常繁琐,好在MakeCode提供手写函数和直接JavaScript进行辩解
* 入门JavaScript可以看看w3school.com.cn
* 因为熟悉Python,后期可以使用microPython进行编程
可以做课件了
页:
[1]