Page Title

第十四课 气象娃娃


2022-12-30 14:18:54


作品图片


1.png


情景描述


    通过天气预报我们会了解天气的情况,有人会挂上晴天娃娃来祈求天气转晴。在本课我们将要使用好搭bit外接DHT11温湿度传感器和光敏传感器来制作一个气象娃娃,在温度、湿度和光照都在使人舒适的范围内时,气象娃娃会露出高兴的表情,否则会露出伤心的表情。


知识与概念


要学习本课的案例,需要了解以下的概念与原理:

DHT11温湿度传感器

温度、湿度传感器是指能够感受温度、湿度并转换成电信号的传感器。

温度、湿度传感器采用的是“DHT11”温湿度传感器。这是一款温湿度复合传感器,既能够检测温度、又能够检测湿度。它的温度检测范围是(0℃-50℃)、误差值±2℃;湿度检测范围是(20%-90%RH)、误差值±5%RH。日常生活中所指的湿度是“相对湿度”,“90%RH”就是指空气中实际水蒸气的含量与相同温度下饱和水蒸气含量的百分比是90%。

DHT11温湿度传感器.png


要制作本课的范例作品,还需要学习以下新的指令:

DHT11传感器相关的指令在HaodaBit类别指令中

1.“读取DHT11温湿度”指令

2.png

3.png


使用这个指令可以读取指定端口温湿度传感器上输出的温度、湿度值。指令默认读取的是“P0”端口的温度值;通过单击下拉列表,可以选择读“华氏温度” 、“摄氏温度”以及“湿度”,可以选择多个端口。这条指令需要与其他指令配合使用,无法单独使用。


逻辑类别下的布尔值相关指令:

1.“与”指令

4.png


与运算相当于和(and),用来同时判断两个条件,需要结合逻辑判断语句使用,一般用于需要同时满足两个不同的条件或者数值在指定的区间范围内,则该运算返回为真(true),一旦其中一个条件不满足,则返回假(false)。


作品制作


1.作品描述

气象娃娃是对好搭bit与DHT11温湿度传感器、光敏传感器的综合运用,通过外接DHT11温湿度传感器,实时监测当时当地的温湿度数值,通过光敏传感器来检测光照强度,当温度湿度和光照强度都在理想范围内时,板载点阵屏显示高兴的表情,否则显示伤心的表情。


2.硬件连接

将模块与haoda:bit连接起来:光敏传感器连接在“P0”端口,DHT11温湿度传感器连接在“P1”端口;接着haoda:bit与计算机连接,将haoda:bit开机,确定电脑资源管理器跳出“MICROBIT”U盘,进入下载模式。

5.png


3.设立表示温度的变量获取DHT11温度的值

进入好好搭搭MakeCode软件;

要获取温度,首先我们需要在变量类别下点击设置变量,新建一个变量温度(temp)来储存DHT11的温度采集的温度数据,在HaodaBit类别下的传感器中选择“读DHT11温湿度“指令,下拉选择第一个参数为温度(可以选择华氏温度或者摄氏温度),第二个参数为指定端口P1,具体程序如下图所示:

6.png


4.设立表示湿度的变量获取DHT11湿度的值

要获取湿度,首先我们需要在变量类别下点击设置变量,新建一个变量湿度(hum)来储存DHT11的温度采集的湿度数据,在HaodaBit类别下的传感器中选择“读DHT11温湿度“指令,下拉选择第一个参数为湿度,第二个参数为指定端口P1,具体程序如下图所示:

7.png


5.设立表示亮度的变量获取光敏传感器的值

要获取光敏传感器的值,首先我们需要设立一个表示光照强度的变量命名为“light”,将其设为模拟读取引脚P0的值即读取光敏传感器的值,可以将light的具体数值实时显示在点阵屏上,方便后续查看和调整数值,具体程序如下图所示:

8.png


5.检测温湿度和亮度是否在范围内并显示高兴或伤心的表情

通过查阅资料我们了解到:人体感到适宜的温度范围在18到22摄氏度之间,湿度在45%到55%之间,另外还要让光照强度在晴天的数值范围内,要满足这三个条件气象娃娃才会露出高兴的表情,因此我们需要三重的判断。

在逻辑类别下选择“如果否则”指令,第一层判断温度是否在18到22度之间,用于数值区间的判断我们还需要结合运用“与”指令,判断条件1:温度>=18和条件2:温度<=22,在同时满足这两个条件下才会进行下一层判断;

第二层判断湿度是否在45到55之间,判断条件1:湿度>=45,判断条件2:湿度<=55,满足了温度和湿度的条件后,我们还需要进行最后一层的亮度判断;

第三层判断亮度是否大于100(具体表示晴天的数值可以自由调整),这里只需要判断一个条件即亮度>100;

满足了以上三层的判断条件,气象娃娃就会显示高兴的表情,只要其中一层判断不满足,即显示伤心的表情,配合延时指令,表情在基本类别下的显示选定图标可进行选择表情,具体程序如下图所示:

9.png


试一试:使用“与”和“如果否则”指令,你还可以怎么编写判断气象的程序?


拓展与思考


想一想,你还可以让气象娃娃在不同的天气情况下显示其他不同的表情吗?尝试编写下程序吧!

我打算这么做:                                                                                                                                                                             

做的时候需要注意: