资源描述
传感器--探测教室里的光线与声音
盛夏到了,太阳的光线越来越强烈,为了避免被晒伤,我们应该在太阳光线稍弱的时候选择外出,并且我们可以利用同样的原理来探究一下声音的大小,那我们如何知道外面的光线和声音呢?这节课我们就学习如何使用掌控板来探测光线的强弱和声音的大小。
一、学习目标:
1、学习“映射”模块和“int”模块的使用
2、学习运用声音、光线传感器
二、思维开发:
我们需要探测光线和声音的大小,所以需要使用掌控板上的麦克风和光线传感器,再通过OLED屏来显示声音和光线的大小,为了更好的观察,可以绘制能反映声音和光线变化的进度条
三、 程序设计流程解析:
打开程序mPython,根据下述解析步骤,分四步完成光线数据的收集与显示,用同样的方法完成声音数据的收集与显示,全部完成的同学进入挑战任务。
①在“显示”模组里找到显示组件
清空OLED屏
②在指定坐标或者指定行显示文字文本“光线”
或
③显示能根据光线强弱来变化的数值
我们光线传感器的光线等级区间是0-4095,为了能更好的显示和便于观察,我们需要将区间缩小,这里我们需要使用“映射”模块,
“映射”模块的作用就是将一个元素集对应到另一个元素集,可以将原元素集缩小或者放大。
在“数学”模组中找到“映射”模块,修改数值。
我们需要映射的是光线传感器的值,还需要找到“光线值”模块
映射光线值从0-4095到0-100
因为光线值在变化中会有小数点,为了更好的观察,用整型字符“int”进行取整,只显示整数
接下来我们将整型映射的光线值转化为能够被oled屏识别显示的文本格式
用显示文本模块将光线值显示在oled屏对应的位置
④绘制根据光线值变化的进度条
X坐标和y坐标确定进度条的显示位置,改变宽、高的值可以改变进度条的大小,进度设置为前面整形取整的光线值(可以从上面的操作中复制出来)。
将前面的模块搭建起来,光线值的程序就写好了。
用同样的方式,对照①-④,写出声音值的程序。
文本和进度条的坐标可以自己确定,注意不要出现显示重叠现象。
最后,
四、整个程序及显示效果如下:
五、Python代码
from mpython import *
myUI = UI(oled)
while True:
oled.fill(0)
oled.DispChar("光线:", 0, 0, 1)
oled.DispChar((str(int(numberMap(light.read(),0,4095,0,100)))), 30, 0, 1)
myUI.ProgressBar(2, 20, 124, 8, (int(numberMap(light.read(),0,4095,0,100))))
oled.DispChar("声音:", 0, 32, 1)
oled.DispChar((str(int(numberMap(sound.read(),0,4095,0,100)))), 30, 32, 1)
myUI.ProgressBar(2, 48, 124, 8, (int(numberMap(sound.read(),0,4095,0,100))))
oled.show()
六、写一写:
根据今天学习到的知识回答问题,并将你的答案记录在表1- 1中。
表1- 1
问题
你的答案
掌控板上共有哪些传感器,分别是什么名称?
传感器数值等级区间是多少?
数值如何转化为能显示出来的文本?
如何让OLED显示指定的文本?
如何设置一个简单的进度条?
七、做一做:
基础任务:
1.显示出当前环境下的光线值和声音值。
2.用进度条方式直观显示出当前环境下的光线值和声音值。
八、挑战任务:
1.显示出当前环境下的温度、湿度、大气压值
2.能否在光线值及声音值后面显示出光线值和声音值的强弱分析结果。
提示:光线值和声音值在0-19 为弱 20-60为正常 61-100 为强
展开阅读全文