# 第三课 在WU-Link中使用点阵屏——送给妈妈的计时器

\[TOC]

WU-Link面板上的LED点阵屏，不仅可以显示图案，还可以显示字母、数字等信息。本课我们将使用点阵屏和按键，为爱做烘焙的妈妈制作一个定时器，帮助她更加精确的掌握时间。

## 模块与指令

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

### “按键”模块

按键其实就是一种开关，它有“按下”和“弹起”两种状态：一般默认是“弹起”；当用手指按住按键帽往下按、并且保持不动的时候，就处于“按下”状态；松开手指，按键又会重新处于“弹起”状态。

WU\_Link面板中央左右两边各有一个按键，其中左边这个按键编号是“A”，右边编号为“B”（如下图所示）。

![](/files/-LWt7Xp9ZiI-uzJMvJaS)

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

### “点阵屏显示文本”指令:

![](/files/-LWt7XpBJ29kM4gM6ytl)

属于“点阵屏”类别指令；使用这个指令可以设置WU-Link点阵屏显示参数指定的文本内容。

指令的参数默认是“YES”，可以根据需要修改。由于WU-Link点阵屏只能显示四个字母，当输入字母数超过四个，就会以滚动方式显示。

### “点阵屏显示数”指令:

![](/files/-LWt7XpFZINKtIDzi2g3)

属于“点阵屏”类别指令；使用这个指令可以设置WU-Link点阵屏显示参数指定的数。

指令的参数默认是“123”，可以根据需要修改。由于WU-Link点阵屏只能显示四个数字，当输入数字超过四个，会以滚动方式显示。

### “点阵屏清除”指令:

![](/files/-LWt7XpItEIJCw6FCKxP)

属于“点阵屏”类别指令；使用这个指令可以清除WU-Link点阵屏原来的显示内容，为显示新的内容做准备。

### “读板载按键值”指令:

![](/files/-LWt7XpMEF-fr0-5cvXk)

属于“板载”类别指令；使用这个指令可以读取WU-Link板载按键的值。当按键处于正常状态、也就是“弹起”时，该指令返回的值是“0”；当按键被“按下”时，指令返回值是“1”。

指令默认是读取按键“A”的值；可以单击打开下拉列表参数，从中选择“A”或者“B”选项，选择读按键“A”还是“B”的值。

### “声明变量类型并赋值”指令：

![](/files/-LWtC5EJOdd4QHAb3ikS)

属于“变量”类别指令；用于声明指定变量的类型并对这个变量赋值。

指令有三个参数：

* 第一个参数是选择需要声明的变量名称（需要先创建变量，所创建变量名称才会在下拉列表中显示）。
* 第二个参数是所要声明的变量类型，共有七种类型，其中最常用的是“整数”、“小数”、“字符串”这些变量类型。
* 第三个参数是具体的赋值，需要组合其它指令，一般最常用的是“数学与逻辑”类别中的“数值”指令和“文本与数组”类别中的“字符串”、“字符”指令。

## 作品制作

要制作本课的范例作品，先要了解WU-Link点阵屏和按键的基本使用方法，能够在点阵屏上显示指定的字母、数以及按键当前状态的值。然后编写代码，将WU-Link点阵屏当作定时器显示屏，显示依次累加（累减）的数。

### 第一步：在点阵屏上显示指定的文本

要在点阵屏上显示指定的文本，可以将“显示”类别中的“点阵屏显示文本”指令拖动到编程区，与默认的“重复执行”指令组合。

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

![](/files/-LWt7XpR1YtGB287BNX7)

#### 试一试：

将上图所示程序下载到WU-Link，看看WU-Link点阵屏上显示的是什么？然后按下表要求依次修改“点阵面板显示文本”指令的参数，重新下载到WU-Link运行，将点阵屏上显示的内容分别记录下来。

![](/files/-LWt7XpUr_JYHxTecldR)

### 第二步：在点阵屏上显示指定的数

要在点阵屏上显示指定数值，可以将“显示”类别中的“点阵屏显示数”指令拖动到编程区，与默认的“重复执行”指令中组合。

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

![](/files/-LWt7XpX4hIuEhcea7gf)

#### 想一想：

如何才能够在点阵屏上同时显示字母和数字？

### 第三步：在点阵屏上显示按键的值

WU-Link点阵屏除了可以显示指定的数，还可以显示传感器的值。

要在点阵屏上显示按键的值，同样也是先将“显示”类别中的“点阵屏显示数”指令拖动到脚本区，与“重复执行”指令中组合；然后将“更多”类别中的“读板载按键值”指令拖动添加到“点阵屏显示数字”指令的参数位置。

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

![](/files/-LWt7XpZ-w83ouOQvWWi)

#### 试一试：

将上图所示程序下载到WU-Link，然后按下表要求“按下”或者“弹起”按键，观察点阵屏上显示的数，把结果记录到表格中。

![](/files/-LWt7XpbGUfWFL2LC3ew)

### 第四步：制作计时器

计时器的数值会自动变化，从一个初始值开始依次递增或者依次递减。要在点阵屏上显示这个不断变化的数，需要新建变量：

可以先单击“变量”指令类别中的“创建变量”按钮，在打开的“新变量的名称”对话框中（如下图所示）输入“变量名”为“time”，输入完成后单击“确定”按钮，就会在“变量”指令类别中新建这个变量。

![](/files/-LWt7XpdcMKgwgXLaHK_)

```
注意：WU-Link程序中的变量名与Scratch一样，除了可以使用字母和数字作为变量名以外，还可以使用中文作为变量名；变量名最好有一定的意义。
```

变量创建完成后，在编写程序时，还需要先“声明变量类别”。也就是将“变量”指令类别中的“声明并赋值”指令拖动到编程区，与默认的“初始化”指令组合，再将“数字与逻辑”指令类别中“数值输入”指令作为“声明并赋值”指令的参数，设置“数值输入”指令参数为“1”。

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

![](/files/-LWt7XpgQ5eKCtMxHtgf)

在“初始化”脚本中声明变量后，可以在“重复执行”脚本中先累加变量的值，然后在点阵屏上显示累加后的变量值，等待1秒以后再重复执行。具体可以按以下步骤操作：

1.在“重复执行”指令中依次添加“重复执行指定次数”以及“赋值”指令；

2.在“重复执行指定次数”指令中依次添加“点阵屏清除显示”、“点阵屏显示数字”、“延时”以及“赋值”指令；

3.将“变量”指令类别中的变量“time”指令作为“点阵屏显示数字”指令的参数；修改后的这条指令可以在点阵屏上显示变量“time”的值；

4.将“数字与逻辑”指令类别中的“数值运算”指令添加作为“赋值”指令的参数，再将“变量”指令类别中的变量“time”指令作为“数值运算”指令的第一个加数；修改后的这条指令可以将变量“time”赋值为“time”+“1”，也就是变量依次累加；

5.将“数字与逻辑”指令类别中“数值输入”指令作为“声明并赋值”指令的参数，设置“数值输入”指令参数为“1”；这条指令使得变量“time”重复执行10次显示以后，重新赋值为“1”，再次从1开始依次累加。 具体主程序代码如下图所示：

![](/files/-LWt7XpjItBSo77_g3dm)

#### 试一试：

如果计时器是从“10”开始倒计时，计时到“0”结束。程序代码应该如何修改？

### 第五步：用按键控制计时器

要用按键控制计时器，也就是如果“读板载按键A”指令的值等于“1”，计时器开始计时，点阵屏重复执行从“1”显示到“10”。计时结束后继续处于判断状态，等待再次按下按键重新计时。

这段脚本可以在前面“计时器”程序的基础上修改：“初始化”脚本不变；在“重复执行”脚本中添加“条件判断”指令，将原有的“重复执行指定次数”以及“赋值”指令作为“条件判断”指令条件成立后执行的脚本，设置“条件判断”指令的条件为：“读板载按键A的值”“等于”“1”。

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

![](/files/-LWt7Xpm7Lc8HdS-xRn0)

#### 想一想：

能不能让这个计时器更好玩？比如计时开始前先闪烁数字“0”，计时结束后闪烁数字“10”？

## 拓展与思考

能不能把WU-Link面板上的按键“B”也用上，用按键“B”调整计时器需要计时的值。比如按一下这个按键在数码管上显示“10”，再按一下分别显示“20”、“30”……；需要计时的数值确定后，按按键“A”开始倒计时，倒计时结束后闪烁最后显示的数字“0”。


---

# 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-3.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.
