【情境导入】
同学们有没有试过在音乐软件听歌时用摇一摇来切换歌曲呢? 有没有用过微信里的摇一摇的功能呢?
本节内容,我们一起来学习制作“摇出好心情”!
【任务描述】
利用掌控板板载1.3英寸OLED显示屏和重力加速度传感器,通过设置变量和程序的多线性,在屏幕上显示文字和图片。
【材料清单】
硬件—— 掌控板板载1.3英寸OLED显示屏、三轴加速度传感器、USB数据线
软件 ——mPythonX图形化编辑器
【准备工作】
>掌控板板载1.3英寸OLED显示屏:
分辨率128x64,支持简体中文,繁体中文,日文和韩文语言。
>重力加速度传感器
掌控板上的加速度计可测量x、y、z轴的加速度,测量范围为 -2g 到 +2g 之间。
>关键语句
变量→创建变量
事件→当掌控板被摇晃时执行
显示→显示文本语句、OLED显示生效语句。
【学习目标】
1、学会运用显示文本模块、显示图片模块、OLED显示激活模块;(重点)
2、学会设置变量、初始化变量;(重点)
3、 学会运用多线程。(重难点)
【项目示例】
Step1 模块使用
1、创建变量:变量->创建变量
2、新建变量名为num
3、初始化变量的值:变量->将变量设定为0
4、事件:变量->当掌控板被摇晃时
5、摇晃时变量num+3
6、屏幕上显示num的值:显示→显示生效
【技术支持】
下面的表格罗列了多种正多边形的边数和边长。
对于第一列数据 4、10、5、6,我们给其标签为“边数”。
对于第二列数据 30、70、20、50,我们给其标签为“边长”。
在计算机术语中,把类似“边长”、“边数”的标签称为“变量”,它就像一个抽屉,你可以改变里面放的内容。
“将变量XX的值设定为XXX”理解起来就是将某一变量的的值设定为指定数字,一般可以用于计分前的声明(如上),设定起始的值等。
“将变量XX的的值增加XXX”:意思是将某个变量的的值增加指定数值,配合“将变量的的值设定为XXX”使用。
重力加速度传感器能够感知到加速力的变化,加速力就是当物体在加速过程中作用在物体上的力。
“摇出好心情”是通过判断掌控板的运动状态来制作的。掌控板中的重力加速度传感器检测到加速力的变化后即为掌控板被摇晃。一直检测掌控板是否被摇晃,如果摇晃了则执行里面的语句。
Step2 程序的多线程
思考:程序在运行时,同一时间只执行一条语句吗?
程序在运行时同时只执行一条语句,叫做程序的单线程;同时执行多条语句, 这叫做程序的多线程。
打个比方:
单线程是一张桌子上一个人吃饭,其他人排队,必须等他吃完才能到下一个;
多线程则是同一张桌子,多个人吃饭, 就算其中一个人吃得很慢,也不会很大 地影响到后面排队的人。
多线程的作用:
比起单线程速度快; 资源利用率高;
“一心多用”,同时处理多条语句,同步完成多个任务。
Step3 摇出好心情
思路:程序开始显示文字和进度条,然后摇晃掌控板使进度条从0 增加,进度满了后显示文字和图片。
1、启动后变量初始化和显示文字:
2、检测是否被摇晃:
3、屏幕显示进度条,并判断进度条是都到达100:
4、跳出循环后,显示文字和图片
5、拼搭好程序后,刷入程序,观察结果。
【技术支持】
通过修改x,y坐标可以调整文本显示的位置,因此需要知道OLED显示屏的坐标分布。
掌控板OLED显示屏坐标分布,如下图:
由上图坐标分布可知, OLED屏宽为128像素,高为64像素。
在OLED屏幕上显示图片,需要将图片装换为像素点:
1、修改图片大小,长不超过128,宽不超过64(OLED显示屏的最大宽度)
2、将图片另存为.bmp格式的图片
3、使用取模工具(PCtoLCD、lcd image converter等)对图片进行取模
4、输出数据类型[C语言数组]、 扫描模式[水平扫描]、输出灰度[单色]、宽高[128*64],适当调整图片的亮度和对比度直至输出图片清晰
5、点击保存,生成.c文件,去掉代码的首位两行,剩下的都是图片的像素点
6、将像素点粘贴到绘制图形模块的列表中(宽度和高度可以从取模软件底部得知)
【拓展思考】
如何在OLED屏幕上显示更多不同的文字和图片?