本帖最后由 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
需要注意的点
- 每次调用温度函数都会进行一次读取,所以我们读取一次进行判断
- 不要调用
基本 里面的显示LED 来显示一行并试图拼接,会覆盖剩下的led点亮
- 自定义实现取整函数要注意 % 10以获得个位数
- 超过5的值要记得减去5在次行显示
2、总结
- 使用Blocks拖拽真的非常繁琐,好在MakeCode提供手写函数和直接JavaScript进行辩解
- 入门JavaScript可以看看w3school.com.cn
- 因为熟悉Python,后期可以使用microPython进行编程
|
|
|
|
|
|