# 第四课 在WU-Link中使用板载传感器——环境自动检测仪

\[TOC]

人类舒适的生活环境，与环境温度、光线强度密切相关。本课我们将使用WU-Link制作一个环境自动监测仪，实时显示周围环境的光线强度、温度值。

## 模块与指令

**要制作本课的范例作品，需要认识以下这些新的硬件：**

### “亮度传感器”模块

亮度传感器其实是一个光敏管，它能够感知周围光线的强度，通过采集转化后输出具体数值。WU-Link主板上集成有一个亮度传感器，位于面板左下方，标记有英文单词“Light”（如下图所示）。

![](/files/-LWt7X3ehut4j8AWvuIM)

### “温度传感器”模块

温度传感器能够感受周围环境的温度，通过采集转化后输出温度值。WU-Link主板上也集成有一个温度传感器，位于面板右下方，标记有英文单词“Temp”（如上图所示）。

**要制作本课的范例作品，还需要使用以下新的指令：**

### “读板载亮度传感器”指令

![](/files/-LWt7X3kkrczHgcG6fIA)

属于“板载”类别指令；使用这个指令可以读取WU-Link板载亮度传感器输出值，输出数值范围是（0，4095）。

### “读板载温度传感器”指令

![](/files/-LWt7X3pFxVOEWHyFd92)

属于“板载”类别指令；使用这个指令可以读取WU-Link板载温度传感器输出值，输出数值范围是（0℃，50℃）。

## 作品制作

要制作本课的范例作品，先要掌握在WU-Link点阵屏上分别显示环境亮度、温度值的方法，了解亮度传感器、温度传感器的特点；然后编写代码，在WU-Link上同时显示亮度、温度传感器的值。

### 第一步：在点阵屏上显示亮度传感器值

要在点阵屏上显示亮度传感器的值，需要先对点阵屏初始化。

具体初始化代码如下图所示：

![](/files/-LWt7X3yi3ZxDiMQAUOZ)

初始化点阵屏以后，可以在“重复执行”指令中添加“点阵屏清除”和“点阵屏显示数”指令，再设置“点阵屏显示数”指令的参数为“读板载光线传感器”指令。这段代码先清除旧的点阵屏显示内容，然后显示新读取的板载光线传感器数值。

具体主程序代码如下图所示：

![](/files/-LWt7X40gLV32yWYn0gc)

#### 试一试：

将上图所示代码编译后下载到WU-Link，然后按下表要求将WU-Link放到不同的环境下测试亮度值，将点阵屏上显示的亮度值记录下来。

![](/files/-LWt7X47m8bXqYDYWb4K)

### 第二步：在点阵屏上显示温度传感器值

要在点阵屏上显示温度传感器值，也是先初始化点阵屏（初始化程序代码如第一步所示）；然后同样在“重复执行”指令中添加“点阵屏清除”和“点阵屏显示数”指令，最后设置“点阵屏显示数”指令的参数为“读板载温度传感器”指令。

具体主程序代码如下图所示：

![](/files/-LWt7X4Cj-fYBuIjGDM2)

#### 试一试：

将上图所示代码编译后下载到WU-Link，然后按下表要求测试不同环境下的温度值，将点阵屏上显示的温度值记录下来。

![](/files/-LWt7X4JC0LJ_qlwkmbL)

### 第三步：在点阵屏上交替显示亮度、温度值

如果要在点阵屏上交替显示亮度、温度值，也是先初始化点阵屏（初始化程序代码如第一步所示）；然后在“重复执行”指令中清除点阵屏显示内容后，再显示新读取的亮度传感器数值；延时“1000”毫秒以后再清除点阵屏显示内容、显示新读取的温度传感器数值、再延时“1000”毫秒。

具体主程序代码如下图所示：

![](/files/-LWt7X4Nmo_Q9NsQAYKl)

#### 试一试：

尝试删除上图所示程序中的两个“延时”指令，重新编译执行程序，还能够在点阵屏上正常交替显示亮度、温度值吗？为什么？

### 第四步：用A、B按键控制显示亮度、温度值

在点阵屏上交替显示亮度、温度值并不是一个比较好的显示方案，其实可以充分利用WU-Link面板上的两个按键，使用按键来控制传感器数值的显示：按下按键“A”显示亮度传感器值、按下按键“B”显示温度传感器值。具体可以按以下步骤编写程序：

1.初始化点阵屏（初始化程序代码如第一步所示）；

2.在“重复执行”指令中添加“判断”指令，在“判断”指令的条件中添加“读板载按键值”指令，确认该指令参数为“A”，也就是“判断”指令的条件是按键“A”按下。

3.如果“判断”指令的条件成立，那么就执行“点阵屏清除”和“点阵屏显示数”指令，设置“点阵屏显示数”指令的参数为“读板载光线传感器”指令。

4.由于需要判断两个条件，因此可以单击“判断”指令左边的设置图标，在打开的设置窗口中，将“否则如果”添加到“如果”的下方，为“判断”指令再添加一个判断条件。设置完成后再单击“判断”指令的设置图标关闭设置窗口。

5.在“判断”指令的“否则如果”条件中，同样添加“读板载按键值”指令，修改该指令的参数为“B”，也就是“否则如果”的判断条件是按键“B”按下。

6.“否则如果”条件成立，那么就执行“点阵屏清除”和“点阵屏显示数”指令，设置“点阵屏显示数”指令的参数为“读板载温度传感器”指令。 具体主程序代码如下图所示：

![](/files/-LWt7X4Q0pR_Oafw8KSr)

#### 想一想：

如果不像上图所示程序这样使用“判断”指令，要用A、B按键控制显示亮度、温度值，还可以怎么编写程序代码？

## 拓展与思考

除了在点阵屏上用数字显示亮度和温度值，你还能够在点阵屏上设计图案，形象的表示环境亮度、温度的适宜程度吗？


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.haohaodada.cn/zai-xian-ru-men-ke-cheng/wulink-primer/lesson-4.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
