# 米思奇

# keyes UNO PLUS

## 第1小节 简单介绍keyes UNO PLUS开发板

我们先看一下他的特写：

![](media/6de9a26c7e7aed17991d30ff1e8da3b7.png)

我们通过下面的图来了解一下这个开发板的各个接口和主要元器件。

![](media/18342f8277d9585dfcb52c94d5b48303.jpeg)

接口简介

串口通信接口：D0为RX、D1为TX

PWM接口（脉宽调制）：D3 D5 D6 D9 D10 D11

外部中断接口：D2(中断0)和D3 (中断1)

SPI通信接口：D10为SS、D11为MOSI、D12为MISO、D13为SCK

IIC通信端口：A4为SDA、A5为SCL

时钟频率

主板使用16 MHz晶振

## 第2小节 了解米思奇

上一节我们了解了keyes UNO PLUS开发板，这节课我们开始学习米思奇图形化编程软件

1.Mixly简介

Mixly是一款由北京师范大学教育学部创客教育实验室傅骞教授团队基于Google的Blockly图形化编程框架开发的免费开源的图形化Arduino编程软件。是一款面向创意电子开发的免费开源图形化编程工具；一个面向创意电子教育的完整支持生态；一个创客教育工作者实现梦想的舞台。

可以说Mixly是目前功能最丰富，操作最流畅的Arduino图形化编程软件，几乎可以替代Arduino IDE编程工具。

米思齐软件下载地址

<http://mixly.org/explore/software/mixly-arduino>

2.Mixly的设计理念及适合人群

2.1设计理念

（1）易用性

Mixly在设计上做到了完全绿色使用。目前Mixly支持win、ubuntu、mac。Windows用户直接从网上下载Mixly软件包，解压后即可在Windows XP及以上版本的操作系统运行（下文附有下载链接）。

（2）简单性

Mixly采用了Blockly图形化编程引擎，使用图形化的积木块代替了复杂的文本操作，为初学者的快速入门奠定了良好的基础。①用不同颜色的示意图标代表不同类型的功能块，方便用户归类区分。②在复合功能块中提供默认选项，有效减少用户的拖动次数。③在同一个界面整合软件的所有功能。④提供参考教程及代码示例。 

（3）功能性

功能多样，arduino IDE能实现的功能和函数，Mixly也几乎都可以实现。支持arduino所有的官方开发板。

（4）延续性

图形化编程系统的目标绝对不是替换原有的文本编程方式，而是希望通过图形化编程更好更快地理解编程的原理和程序的思维，并为未来的文本编程打好基础。Mixly的设计理念也是如此。在软件的设计上加入了更多的可延续性内容，从而保护了用户的学习成果。具体来说，包括引入变量类型、在模块的设计上尽量保持和文本编程的一致、支持图形编程和文本编程的对照等。 

（5）生态性 

生态性是Mixly最重要的设计理念，也是它区别于其他Arduino图形化编程的最重要特征。为了实现可持续发展，Mixly在设计上既允许厂商开发自己的特有模块，用户需要有JavaScript编程基础才能制作这部分模块，也允许用户直接利用Mixly的图形化编程功能生成通用模块（如数码管显示、蜂鸣音播报等，用户只需会使用Mixly即可制作这部分模块）。以上两类模块均可通过“导入库”功能导入Mixly系统，从而在Mixly软件的普及中实现用户自身的价值。

2.2合适人群

从以上的设计理念，可以看出，Mixly适合中小学生来学习编程思维。也适合创客制作作品时能快速编程。当然更适合一些不想学文本编程，却想做一些智能控制小作品的大朋友们。

3.Mixly界面功能介绍

3.1 Mixly系统功能简介

Mixly的主界面由左上的模块选择区、中上的程序构建区、右上的代码程序区（可隐藏）、中部的系统功能区和下部的消息提示区构成。

如下图所示：

![](media/b6ab5a79b8ec88151835e00e88c3525a.png)

界面一些常用的功能：通过该界面，用户可以完成程序的编写、上传、保存、代码查看等全部工作。支持程序块向左拖出编程窗、拖拽至垃圾桶、delete键及右键delete四种删除方式；软件支持4种语言：English、Español、中文简体、中文繁体
。

![](media/f36f56af41f5d6ba751886f6e5f27c83.png)

3.2 IO功能模块：主板是keyes UNO R3开发板

![](media/f187e42d26f77dbc54ff4781c2eac4f0.png)

3.3 控制模块

![](media/11fa20dc46fd9547cb83c7909907218f.png)

3.4 数学模块

![](media/3f0e0b537739430a5e50b12def2acd83.png)

3.5文本模块

![](media/f54cbd36bf0073eb0d8b080cf56fbed3.png)

3.6 List模块

![](media/b84070bb0062a1d201bc6309dd7c996e.png)

3.7 Logic模块

![](media/7e3c0e39c01e7a363bb196d9d1895266.png)

3.8 Variable模块

![](media/878329ecd5802a2a6cf61cbeb9385eb1.png)

3.9 SerialPort模块

![](media/88cc5ee4ecd931d615592723eeab72db.png)

3.10 Communicate模块

![](media/6494a1c836c4b4196df4ca95b6920d3e.png)

3.11 Sensor模块

![](media/5474ff32062a4a9b95ba2ed82b597e90.png)

3.12 Actuator模块

![](media/82e42e7fd62837a7e694c430ab935003.png)

3.13 Monitor模块

![](media/b4febdc0146b2cf1e5a0cc0278a6a755.png)

3.14 Function模块

![](media/d0d267c14589c3dc812d2e6dfa1d6a7b.png)

## 第3小节 米思奇库文件添加

为了方便实验程序制作，我们特别为这款套件制作了一个小车库文件。库文件的导入，导出和编辑如下图所示。

![](media/d9c30e2ae4be281e685dea9c86cb5358.png)

点击导入库，进入库文件（文件夹），点击![](media/637d893779902a96ab92892cae3d58c1.png)文件，库文件

就导入成功。

## 第4小节 keyes UNO PLUS开发板的驱动安装方法

我们开始为Keyes Uno Plus 开发板安装驱动。Keyes Uno Plus
开发板的USB转串口 芯片用的是著名的CP2102
芯片，在米思奇软件安装目录下的“arduino”--\>“drivers”
文件夹下已经包含了这个芯片的驱动程序，这样我们使用起来会非常方便。一般插
上USB，电脑就会识别到硬件，WINDOWS就会自动安装CP2102的驱动。
![](media/fe2c97ce022a5a071b2530328df74008.png)

如果驱动安装不成功，或者你想手动安装驱动，请打开电脑的设备管理器![](media/5d3921d98a5be791b0b5166164b389e7.png)

显示CP2102的驱动没有安装成功，有一个黄色的感叹号。我们双击硬件更新驱动

![](media/0946d3e3d322e66303a5e3fec0bb53c0.png)

浏览计算机查找驱动程序，先找到米思奇软件安装目录下的“arduino”--\>“drivers”文件夹，

![](media/abff63e491413339a985a0a03df21106.png)

打开文件夹就能看到CP210X系列芯片的驱动，

![](media/8e4f9bbf067cdc64fe15f91b276b1cd9.png)

我们选择这个文件夹，然后点击确定，驱动安装成功。

![](media/1e888fdeb85783a123b6948dffa44a97.png)

这个时候再打开设备管理器，我就可以看到CP2102的驱动程序已经安装成功了，刚刚的那个黄色的感叹号不见了。

![](media/6ec68bee80c913c6ad392c6e7898ed36.png)

# 模块实验课程

拿到套件后，我们可以看到套件中有24款传感器/模块，有对应的keyes UNO PLUS

开发板、传感器扩展板和连接线。这里，我们将24款传感器/模块利用自带连接线，单独连接在keyes UNO R3开发板和传感器扩展板。然后上传对应的测试代码，单独测试各个传感器/模块的功能。

特别注意：实验时，模块/传感器连接线材时，必须按照资料里的接线方法及位置，电源与信息脚不能错接，否则会损坏模块/传感器。

## 实验一 LED 模块测试

实验说明

在这个套件中，我们们有keyes brick LED红发红模块、keyes brick LED黄发黄模块和keyes brick 3W LED模块共3种LED模块。3钟LED模块控制方法完全一样，只是LED颜色和亮度不同而已。控制时，GND VCC上电后；信号端S为高电平时LED亮起，S为低电平时LED熄灭。

实验中，我们提供两个测试代码，分别控制LED模块上实现闪烁和呼吸灯的效果。闪烁效果好理解；呼吸灯效果，就是控制LED模块上LED首先逐渐变亮，然后逐渐变暗，循环交替，如人体呼吸一样。

实验器材

keyes brick LED红发红模块*1

或者keyes brick LED黄发黄模块

或者keyes brick 3W LED模块

keyes UNO PLUS开发板*1

传感器扩展板*1

3P 双头XH2.54连接线*1

USB线*1

接线图

![](media/74f9b3cd826ee44371d54fbe93f442c8.png)

![](media/2ed5dc197c9f7b7fe7b7ea7899148cdd.png)![](media/abc67f6ddb90a06f61acf4a6ce84ac00.png)

测试代码

代码1：

![](media/b112045da1ad0425d14b41e7532ef564.png)

代码2：

![](media/c521a94d3b355aa295154a4e5c4da3d7.png)

代码说明

代码1说明：

1.  代码1中我们从库文件中找到![](media/89bc8580ac162c06314d6b80ede756cb.png)，和库文件中的![](media/1a7deb2926aeab453f6e811fcb7f9df8.png)![](media/23ae312e59a285b1faf677d8a1e8301d.png)功能一样，它们都是LED模块，设置方法一样，可以通用，只是LED亮度、颜色不一样而已。

2.  ![](media/89bc8580ac162c06314d6b80ede756cb.png)中，管脚是指模块信号端连接的接口，通过接线图，我们方向模块信号端连接在D3，因此，代码中我们把管脚设置为3。![](media/78735dca88c00d57550b0286608a580f.png)是指，我们可以将模块信号端S设置为高低电平。我们测试的过程中，当模块S端设为高电平（高）时，模块上LED亮起，设为低电平（低）时，模块上LED熄灭。

3.  代码中![](media/97d956d94ca499bd95938b5b09dc0163.png)代码延迟时间，单位毫秒，代表延迟1000毫秒，即1秒。

4.  在米思齐软件中，只要没有![](media/b10b2964f8c8f5c07a24eea10bcffa2f.png)单元，就代表代码中所有设置都是循环的。

5.  通过整合前面知识。我们再来看代码就清楚明了了，代码中第一条我们把模块信号端接到D3，设置为高电平，就是点亮模块上LED；第二条延迟1000毫秒，就是让模块上LED点亮1秒。同样第三条第四条代码表示让模块上LED熄灭1秒。代码默认循环，也就是控制模块上LED，循环亮1秒，灭1秒，实现闪烁效果。通过代码设置，我们可以更改模块上LED亮灭的延迟时间，从而使模块上LED实现不同的闪烁效果。

    **代码2说明：**



1.  代码中，用到了![](media/b10b2964f8c8f5c07a24eea10bcffa2f.png)单元，代码改单元中的代码设置
    只执行1次，然后后面的代码就一直是循环的了。

2.  代码1中，我们控制模块上信号端控制LED亮灭。在代码2中，我们通过利用keyes     UNO     R3开发板上PWM口，设置PWM值，控制模块上LED亮度。只有PWM口的原理，这里就不多介绍了，网上有很多信息。

3.  keyes UNO R3开发板上只有D3 D5 D6 D9 D10     D11数字口是PWM口，也就是说如果要控制LED的亮度，信号端就只能接着几个接口。实验中，我们将模块信号端接在D3脚，属于PWM口。设置时我们设置PWM数值越小，模块上LED越暗，数值越大，模块上LED越亮，范围为0-255。

4.  ![](media/ff6866f0b661519bf0d84b3cc0cd59bd.png)，初始化时，我们将D3的PWM数值设置为0，即熄灭模块上的LED。

5.  ![](media/0fd2b9018f7d3818748c36b4a6172856.png)代表设置一个变量i，i从0直接增加到255，每一次都加1，总共加了255次。

6.  ![](media/3b4078197820df794251df5efcdae29f.png)代表将D3的PWM值设置为i，![](media/6a6176f93bbecc8bce4edf6ca48f3fda.png)代表延迟10毫秒；和前面代码搭配，代表每过10毫秒，变量i都加1，直到i为255。

7.  ![](media/0daeb3deac97f1fc344bd22cb8cddcbf.png)代表设置一个变量i，i从255直接减小到0，每一次都加-1，总共加了255次。

8.  通过整合前面知识，我们再来看代码，就清楚多了。初始时我们将D3端设置为0，熄灭模块上LED。然后开始循环，将D3的PWM值设置为i，i刚开始由0增加到255，每次加1，每加一次延迟10毫秒，模块上LED逐渐变亮。PWM为255后，i开始由255减小到0，每次减1，每减一次延迟10毫秒，模块上LED逐渐变暗。然后又逐渐变亮，循环交替，如人体呼吸一样。

9.  如果我们感觉逐渐变亮
    或者逐渐变暗的时间过长，我们可以更改代码设置。有两种方法，一种是将每次加1减1的延迟时间降低；另一种是更改步长，注意这个步长必须能被255整除，如3     5。步长改为3 -3代表i每次增加3或减小3。

测试结果

上传测试代码1成功，上电后，LED模块上LED开始闪烁，亮1秒，灭1秒，循环交替。上传测试代码2成功，上电后，LED模块上LED开始逐渐变亮，然后开始逐渐变暗，循坏交替，如人体呼吸一样。

## 实验二 插件RGB模块调节RGB LED颜色

实验说明

在这个套件中，有一个插件RGB模块，它采用F5-全彩RGB雾状共阴LED元件。控制时，我们需要将模块R G
B连接单片机PWM口，-接GND。我们通过调节3个PWM值，控制LED元件显示红光、绿光和蓝光的比例，从而控制RGB模块上LED显示不同颜色灯光。当设置的PWM值越大，对应显示的颜色比例越重。理论来说，通过调节这3中颜色光的混合比例，可以模拟出所有颜色的灯光。

实验中，我们通过测试代码，控制模块上RGB LED显示几个常用颜色。

实验器材

keyes brick 插件RGB模块*1

keyes UNO PLUS开发板*1

传感器扩展板*1

4P 双头XH2.54连接线*1

USB线*1

接线图

![](media/0ef1fdcd045f5c43aeb5f4c2c90e599f.png)

测试代码

代码1：

![](media/c40526af84b173037f5448ad42bf4e14.png)

代码2：

![](media/fd0fd917d15089a85ea76a0cf630c2fd.png)

代码说明

代码1说明：

1.  代码1中，我们利用了库文件中设置方法，

    ![](media/94a8f9e511edadffe3533c35eadb48d5.png)中R     G B代表控制模块上

    LED对应的红绿蓝3种颜色对应的端口，根据接线图我们接到了D9 D10     D11，设置为9

    10 11，后面设置对应高低电平，设置GRB     LED中红绿蓝3个灯是否会亮，不能任意调节比例。

2.  现在观察代码，这个代码非常简单，只是简单的控制模块上RGB     LED显示红色1秒、

    绿色1秒、蓝色1秒，循环交替。

    **代码2说明：**



1.  初始化 时设置D9 D10 D11的PWM值为0，熄灭模块上RGB LED。

2.  开始设置一个子程序，找到函数选项，找到![](media/1b59d20115ba1f4fd693b1f0a688ace6.png)项，选择使用该单元。

    点击![](media/4cf7065a62b723bc3ee2829c751cc7dd.png)标志设置子程序框架，将![](media/bcfc9062e875ca4cf7b51034606534b9.png)拉入![](media/133065d3550d2b567024d2495e392aa5.png)，连续拉入3个该单元；点击![](media/0035039844cefac61f3ece909ecabe66.png)设置3个参数类型，我们都设置为整数，点击![](media/a8395cda42ceb70097020459cd5cb6a6.png)设置参数名称；子程序框架设置成功，显示![](media/68d14aefcad562c1d846fd8ea148cb96.png)，点击![](media/4cf7065a62b723bc3ee2829c751cc7dd.png)标志，退出子程序框架设置。设置完后，我们可以在![](media/7e08ee8a47f6833e5cc94f71b37725f9.png)单元中，找到设置的3个名称的参数。

3.  设置框架成功后，显示![](media/a69552c8880dfc137c2e4669acde9f97.png)，点击![](media/dd874593fa0091d00a7fbd8ca19415cc.png)，设置子程序名称，我们设置为color。

4.  子程序框架名称设置成功后，我们就开始设置子程序。根据接线，我们D9控制RGB     LED显示红光，D10控制RGB LED显示绿光，D11控制RGB     LED显示蓝光。我们利用这3个PWM口的PWM值控制RGB     LED显示不同颜色。控制对应的PWM值越大，对应显示的颜色比例越重。因此，子程序我们设置为![](media/05f2a0b1af772abf60c8a767b55181be.png)。

5.  子程序设置成功后，我们就可以在![](media/5397a36b53f7179acd27943c691400a1.png)中找到![](media/0415731692f947eb335adcb7981332c5.png)，这里我们通过设置这3个参数，控制模块上RGB     LED显示不同颜色、亮度，理论来说，可以设置RGB     LED显示所有颜色，总共有255\*255\*255种排列组合。

6.  设置时，如![](media/c40293fb1b4fceedae6f28e9fd7161a4.png)表示使RGB     LED显示最亮的红色。

    ![](media/3f5054be8be913ebbfb6ed29f703a589.png)表示使RGB     LED显示紫色。

测试结果

上传测试代码1成功，上电后，模块上RGB LED循环显示红绿蓝3种颜色，间隔时间为1秒。上传测试代码2成功，上电后，模块上RGB LED显示红绿蓝黄紫白6种颜色，然后熄灭，循环不止，间隔时间为1秒。

## 实验三 热敏电阻传感器简单测试

实验说明

在这个套件中，有一个热敏电阻传感器，它主要采用NTC-MF52AT热敏电阻元件。NTC-MF52AT热敏电阻元件能够时感知周边环境温度的变化，电阻大小随着温度的变化而变化。该传感器就是利用NTC-MF52AT热敏电阻元件这一特性，搭建电路将电阻变化转换为电压变化。

实验中，我们将传感器信号端接到keyes UNO R3开发板模拟口，读出对应的模拟值。我们可以利用模拟值，通过特定公式，计算出当前环境的温度。由于温度计算公式比较复杂，这里就不多介绍了。实验中，我们只是读取对应的模拟值。

实验器材

keyes brick 热敏电阻传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P 双头XH2.54连接线*1

USB线*1

接线图

![](media/876d1fd5a389d222f08d6a6fdce79e31.png)

测试代码

![](media/f22ae9f383884f5c4134fc043d7fc1f0.png)

代码说明

1.  在![](media/39865bd1400d15dc68a989028c2d94ec.png)单元找到![](media/9082c17985688b415e16475a07cca484.png)，设置波特率为9600，我们可

    以更改9600，设置各种波特率。

2.  ![](media/7b8113876ee7aa17c93e73d2478c0bd3.png)，是指将模拟温度传感器信号端接在

    A3，读取A3端的模拟值，在串口监视器上显示，没显示一次新数据，自动换一行显示。

3.  为了方便观察数据，后面加个延迟100毫秒。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示对应的模拟值，温度越高，模拟值越大。

![](media/8bc4e081543742c217afaa0c94fb37c1.png)

## 实验四 无源蜂鸣器模块播放音乐

实验说明

在这个套件中，有一个无源蜂鸣器模块，它主要采用12\*8.5MM 5V 2K无源蜂鸣器元件。无源蜂鸣器元件内部不带震荡电路，控制时，我们只需要在蜂鸣器元件正极输入不同频率的方波（电压5V），负极接地，控制蜂鸣器响起不同频率的声音。该元件的中心频率是2KHz。无源蜂鸣器驱动频率与发生频率之间是一一对应的关系，即驱动频率是2KHz的方波，那听到的声音频率也是2KHz。

实验中，我们利用无源蜂鸣器模块上蜂鸣器输出各种频率的声音，然后控制无源蜂鸣器模块上蜂鸣器播放完整音乐。

实验器材

keyes brick 无源蜂鸣器模块*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P 双头XH2.54连接线*1

USB线*1

接线图

![](media/aabea592c9bcd64f0f63cbd0f002b480.png)

测试代码

代码1：

![](media/a3fdda51cd445811ffce196f10395993.png)

代码2：

![](media/f38007c0a01427d6781c04f978e2bf76.png)

代码说明

代码1说明：

1.  在![](media/378a7652716e2832eda9130bdfdc839e.png)的![](media/824c79f2fb61c3a0e0e9a2491a38fc6c.png)单元找到

    ![](media/1734dd2479b1ebd6c822561aed18025a.png)，其中管脚是代码模块信号端接口，我们连接的是D3，所以设置为3；音调设置对应的是模块上无源蜂鸣器发出的频率，我们可以点击米思齐软件上代码按键，看到对应频率；节拍对应的是各个频率延迟的时间，1个节拍就是延迟1秒。

2.  同样，可以在![](media/378a7652716e2832eda9130bdfdc839e.png)的![](media/824c79f2fb61c3a0e0e9a2491a38fc6c.png)单元找到

    ![](media/18260bb29e7f9abcc5cacf739989a4d6.png)，管脚我们同样设置为3，代码1中为了方便观察效果，我们在后面加了延迟500毫秒。

    **代码2说明：**



1.  同样，可以，在![](media/378a7652716e2832eda9130bdfdc839e.png)的![](media/824c79f2fb61c3a0e0e9a2491a38fc6c.png)单元找到

    ![](media/46df6ce0353cdcecfadcae1e8576ada3.png)，管脚我们设置为3。我们库文件中，直接利用代码

    控制频率和节拍，使蜂鸣器直接播放《圣诞歌》和《生日快乐》歌曲。

测试结果

上传测试代码1成功，上电后，模块上无源蜂鸣器循环播放对应频率对应节拍的声音。上传测试代码2成功，上电后，模块上无源蜂鸣器循环播放《圣诞歌》和《生日快乐》两首歌曲。

## 实验五 霍尔传感器检测磁场

实验说明

在这个套件中，有一个霍尔传感器，它主要采用A3144霍尔元件。该元件是由电压调整器、霍尔电压发生器、差分放大器、史密特触发器，温度补偿电路和集电极开路的输出级组成的磁敏传感电路，其输入为磁感应强度，输出是一个数字电压讯号。它是单极开关型的霍尔传感器，只感应南极磁场。传感器感应到无磁场或北极磁场时，信号端为高电平；感应到南极磁场时，信号端为低电平。当感应磁场强度越强时，感应距离越长。

实验中，我们利用霍尔传感器检测南极磁场，将测试结果在串口监视器上显示。

实验器材

keyes brick 霍尔传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P 双头XH2.54连接线*1

USB线*1

接线图

![](media/7ec721625b66925363511c303cf94915.png)

测试代码

![](media/54b9c07972c2716e1dc898172ea8c6d9.png)

代码说明

1.  在![](media/daa845b2212e16d0cb19b01d73fc11ee.png)单元找到![](media/23e8c845ccd113859ffebd1f8e86df4f.png)，设置item初始变亮为

    整数，并赋值为0，![](media/40a5e450e36409b4c1d91d44108fcc06.png)。

2.  初始化设置波特率为9600。

3.  同样，可以在![](media/378a7652716e2832eda9130bdfdc839e.png)的![](media/2b04aab099d8745524c52c8730f9155d.png)单元找到

    ![](media/f8b977cca84634137ed3f1880bb0f0b0.png)，管脚我们同样设置为3。我们将读取到D3读取到的数字值赋值给item，![](media/6f5dcef7ad0d6deb55dfd19f580b9704.png)。

4.  在![](media/124c93af9ac8c70948e375ac5f919535.png)单元内，找到![](media/f7dda577bbd8b3d50bdc489d2c48a007.png)，点击![](media/389cbcb5ac75b4844ab1892ee298ce1e.png)进行设置，我们可以在里面任

    意添加 如果否则 否则逻辑单元，如下图。

    ![](media/e50024cb88da969f1d31191fa0c4e3ff.png)

    我们实验中，只需要添加一个
    否则单元，设置完成后点击![](media/389cbcb5ac75b4844ab1892ee298ce1e.png)，完成设置。

    ![](media/64f8573b79bd000de8657185996afa05.png)

5.  代码逻辑是传感器感应到南极磁场时，信号端为低电平，D3口为低电平，即item为

    0。这时我们在串口监视器显示对应的数字值和字符；否则（传感器感应到无磁场或北极磁场时），item为1，窗口监视器显示1和另外的字符。

    ![](media/7eb662f48a734186b06885ac26b7d449.png)

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。当传感器感应到南极磁场时，传感器监视器显示如图1；当传感器感应到无磁场或北极磁场时，串口监视器显示如图2。

![](media/3947e23ccdd6cf0bcbd7592cd005d701.png)图1

![](media/4a1e3c9c59e5cc988d31ecb1ee273911.png)图2

## 实验六 敲击模块传感器检测状态

实验说明

在这个套件中，有一个敲击模块传感器，它主要采用SW-2802振动开关元件。SW-2802振动开关元件是弹簧型震动感应触发开关。该振动开关在静止時为开路OFF状态，
当受到外力碰触而达到相应震动力时,或移动速度达到适当离(偏)心力时，导电接脚会产生瞬间导通呈瞬间ON状态;当外力消失時,开关恢复为开路OFF状态。该传感器就是利用元件这一特性，搭建电路将震动信号转换为高低电平变换信号。

实验中，我们利用敲击模块传感器检测敲击状态，将测试结果在串口监视器上显示。

实验器材

keyes brick 敲击模块传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P 双头XH2.54连接线*1

USB线*1

接线图

![](media/6bf5bce2d5358a53a71ea62e93f7fa47.png)

测试代码

![](media/08ebc9bf0b5e80c952fa0252d28b3d0d.png)

代码说明

1.  在实验二中，我们教了怎么设置子程序。

2.  在这一实验中，我们主要接触到的新知识是中断知识。keyes UNO     R3开发板的中断

    口是数字口2和数字口3，我们把信号端设置在数值口3了。

3.  我们在 ![](media/347c6cb1cf22d1ef0c71e336311cf0b4.png)找到![](media/4b1586f61ee24ab8816650beb6cd81b5.png)，设置管脚为3，

    有3中模式：上升、下降和改变。没有敲击时，传感器信号端为高电平，感受到敲击信号，传感器信号端变为低电平；因此我们设置为下降。

    4、中断设置为![](media/c7fee2a89b3d110ffe05e4e1ac09d36d.png)，就是说，传感器感应到敲击信号，中断口3下降，执行![](media/6d34da193d4b03afd07c8f4e42f0ccab.png)子程序，否则执行循环程序。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。当传感器敲击信号时，传感器监视器显示“Knock on!”字符；否则显示“All going well!”字符，如下图。

![](media/df886392bb44eef16ecde0b04605a729.png)

## 实验七 旋转编码器模块计数

实验说明

在这个套件中，有一个keyes brick
旋转编码器模块，它主要采用20脉冲旋转编码器元件。它可通过旋转计数正方向和反方向转动过程中输出脉冲的次数，这种转动计数是没有限制的，复位到初始状态，即从0开始计数。如果我们只计算信号的脉冲，则可以使用两个输出中的任何一个来确定旋转位置。但是，如果我们想要确定旋转方向，我们需要同时考虑两个信号。

实验中，我们利用keyes brick
旋转编码器模块用于计数，当我们顺时针旋转编码器时，设置数据i加1；逆时针旋转编码器时，设置数据i减1；按下编码器中间按键时，设置数据i为0；将测试结果在串口监视器上显示。

实验器材

keyes brick 旋转编码器模块*1

keyes UNO PLUS开发板*1

传感器扩展板*1

5P双头XH2.54连接线*1

USB线*1

接线图

![](media/a4b4f88828bbc8db4709cffbeb6439a4.png)

测试代码

![](media/2478d1c6ce3156e557a17595d1950cba.png)

代码说明

1.  在实验中，我们需要在库文件的![](media/44ac38f4ce570af34bd2a4acec2bacb5.png)单元内，找到以下元件。

    ![](media/87298e2c1c3d791b5145820b9dc8d5d8.png)![](media/0c4b30ac4880730294beed5e13bba971.png)

    2\.     我们把CLK设置为2、DAT设置为3。该代码在库文件中设置好了，它的意思是中断2（CLK）下降后，读取数字口3（DAT）电压，当DAT电压为高电平时，i加1；当DAT电压为低电平时，i减1。我们可以打开米思齐软件中的![](media/b190a094cbfa1545ea8effec045c56e9.png)看到对应设置的C语言代码。

    3\. 然后循环程序中设置按钮管脚（D4）为低电平时，i设置为0。

    4\. ![](media/b3c4d1305fe82cc992efe48ec459f2b6.png)将i的数据在串口监视器中打印出来，设置串口打印时，必须在初始化中设置波特率。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。顺时针旋转编码器，显示数据增加；逆时针旋转编码器，显示数据减小；按下编码器中间按键，显示数据为0，如下图。

![](media/4feda39fcccf7cb299d1a1b0ddef0516.png)

## 实验八 DS18B20温度传感器测试温度

实验说明

在这个套件中，有一个keyes brick 18B20温度传感器，它主要采用DS18B20传感器元件。我们可以利用该传感器测试当前环境中的温度。它的测量范围为－55℃～＋125℃，测量精度为±0.5℃（-10℃至+85℃范围内）。

实验中，我们利用这个温度传感器测试当前环境中的温度，测试结果分为℃和℉两种；并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick 18B20温度传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/42ba4d8021eea7805a10b9705ae197de.png)

测试代码

![](media/1750edf2067c20439e03f0df9c11e0c8.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/44ac38f4ce570af34bd2a4acec2bacb5.png)单元内，找到以下元件。

![](media/bb7509ea9a9b2416d7f1af8626560976.png)

2\. 我们把管脚设置为3，获取温度的单位分别设置为℃和℉。

3\. 设置两个小数变量，分别为val1和val2，将所测结果赋值给val1和val2。

4\.
串口监视器显示val1和val2的值，显示前需设置波特率（我们默认设置为9600，可更改）。

5\.
显示时，我们在数据后面添加单位，如果单位直接设置为℃和℉，测试结果会出现乱码。所以我们直接用C代替℃，F代替℉。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示当前环境的温度，如下图。

![](media/01e12d56edccc9fcaf1fb538cf439aaf.png)

## 实验九 光敏电阻传感器测试光照强度

实验说明

在这个套件中，有一个keyes brick
光敏电阻传感器，它是一个常用的光敏电阻传感器，它主要采用光敏电阻元件。该电阻元件电阻大小随着光照强度的变化而变化，当环境中有亮光的时候，电阻大小为5-10KΩ；没有亮光时，电阻大小为0.2MΩ。该传感器就是利用光敏电阻元件这一特性，搭建电路将电阻变化转换为电压变化。

实验中，我们利用这个传感器测试当前环境中的光照强度对应的模拟值，光照越强，模拟值越大；并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick 光敏电阻传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/58499431c95515ec65ba0aa67d16ebf7.png)

测试代码

![](media/b7a02972d8d89980c2e2156071771dd3.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/a0b997a0f7d4d4ef39500610e75146dc.png)单元内，找到以下元件。

![](media/e1ba15b0e1ec99b61b1091e3d1e28ca4.png)

2\. 我们把管脚设置为A3。

3\. 设置1个整数变量item，将所测结果赋值给item。

4\.
串口监视器显示item的值，显示前需设置波特率（我们默认设置为9600，可更改）。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示对应模拟值。实验中，我们把传感器用手握住，逐渐松开，光照逐渐变强，可以逐渐看到模拟值数据变大，如下图。

![](media/a8df0a677a0d18c46651b684351cca9e.png)

## 实验十 可调电位器模块读取模拟值

实验说明

在这个套件中，有一个keyes brick 可调电位器模块，它主要采用一个10K
可调电阻。通过旋转电位器，我们可以改变电阻大小，然后搭建电路将电阻变化转换为电压变化。

实验中，我们利用这个模块测试对应的模拟值；并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick 可调电位器模块*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/429334cbe788a1b1af1bb809c511b0c4.png)

测试代码

![](media/018ecfc1591152fdbb2853a53d837e29.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/a0b997a0f7d4d4ef39500610e75146dc.png)单元内，找到以下元件。

![](media/659d7789ad742a08adaf3c0f1e1582be.png)

2.  其他设置方法和上一课程类似，都是读取对应的模拟值，这里就不多介绍了。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示对应模拟值。实验中，顺时针旋转电位器，模拟值增大，逆时针旋转电位器，模拟值减小，范围为0-1023，如下图。

![](media/6703de70f742f082f090ba330b58ceae.png)

## 实验十一 避障传感器检测障碍物

实验说明

在这个套件中，有一个keyes brick避障传感器，它主要采用一对红外线发射与接收管元件。原理就是发射管发射出一定频率的红外线，当检测方向遇到障碍物（反射面）时，红外线反射回来被接收管接收，此时指示灯亮起，经过电路处理后，信号输出接口输出数字信号。传感器上有两个电位器，一个用于调节发送功率，一个用于调节接收频率，通过调节2个电位器，我们可以调节它的有效距离。

实验中，我们通过读取传感器上S端高低电平，判断是否存在障碍物；并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick避障传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/f4aea7caf8d6a01c0ae7645bbc753e4d.png)

测试代码

![](media/01b0a7049c2bf089544f77caeb6c4ae6.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/3904f53520a3ef6a516edd28d28edf8c.png)单元内，找到以下元件。

![](media/d7db00f128564436fe5bb1197b23c11d.png)

2\. 我们把管脚设置为D3。

3\. 设置1个整数变量item，将所测结果赋值给item。

4\.
串口监视器显示item数据，然后我们根据item数据判断是否存在障碍物，并在串口监视器上显示对应字符。

5\. 判断语句设置，我们可以参考实验五知识，这里就不多介绍了。

特别注意

烧录好测试代码，按照接线图连接好线，上电后，我们开始调节两个电位器调节感应距

离。

1.  调节发射功率调节电位器，先将电位器顺时针到尽头，然后回调一些，使传感器上

    D1 LED介于不亮与亮之间的零界点。

2.  调节接收频率调节电位器，顺时针调节时，频率增大。调节使它产生38KHz频率的方波，调节时，也观察传感器上D1     LED，使它介于不亮与亮之间的零界点。

![](media/80faffea9d6131a5cc8c1809bb6608fb.png)

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示对应数据和字符。实验中，当传感器检测到障碍物时，item为0，串口监视器显示“There are obstacles”字符；没有检测到障碍物时，item为1，串口监视器显示“All going well”字符，如下图。

![](media/e369887048db5b20a2b9b1b8cd2a38ca.png)

## 实验十二 按键传感器检测实验

实验说明

在这个套件中，有一个keyes brick按键传感器，它主要采用1个轻触开关，自带1个黄色按键帽。当我们按下按键时，传感器信号端为低电平；松开按键时，信号端为高电平。

实验中，我们通过读取传感器上S端高低电平，判断传感器上按键是否按下；并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick按键传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/7b81ed73228217dd03b6d895be316a7a.png)

测试代码

![](media/fed3403962a39988df3da6dd24cdd845.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/3904f53520a3ef6a516edd28d28edf8c.png)单元内，找到以下元件。

![](media/ca70b7e0026a0209ceafb6a66002c8fd.png)

2\. 其它设置方法和上一课程类似，这里就不多做介绍了。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示对应数据和字符。实验中，当传感器按下按键时，item为0，串口监视器显示“Press the button”字符；松开按键时，item为1，串口监视器显示“Loosen the button”字符，如下图。

![](media/4a87b86166f33474b84615577af8df68.png)

## 实验十三 干簧管检测附近磁场

实验说明

在这个套件中，有一个keyes brick 干簧管模块，它主要采用MKA10110
绿色磁簧元件元件。簧管是干式舌簧管的简称，是一种有触点的无源电子开关元件，具有结构简单，体积小便于控制等优点。它的外壳是一根密封的玻璃管，管中装有两个铁质的弹性簧片电板，还灌有一种惰性气体。平时，玻璃管中的两个由特殊材料制成的簧片是分开的。当有磁性物质靠近玻璃管时，在磁场磁力线的作用下，管内的两个簧片被磁化而互相吸引接触，簧片就会吸合在一起，使结点所接的电路连通。外磁力消失后，两个簧片由于本身的弹性而分开，线路也就断开了。该传感器就是利用元件这一特性，搭建电路将磁场信号转换为高低电平变换信号。

实验中，我们通过读取模块上S端高低电平，判断模块附近是否存在磁场；并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick干簧管模块*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/3b8c5c1464cf53d54d7185b702d3d755.png)

测试代码

![](media/3fabc0a0083dfbef229818fdb29d4ce7.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/3904f53520a3ef6a516edd28d28edf8c.png)单元内，找到以下元件。

![](media/849b0a9dd294fa8bb62ac4ccc0b6c851.png)

2\. 其它设置方法和实验十一类似，这里就不多做介绍了。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示对应数据和字符。实验中，当传感器检测到磁场时，item为0，串口监视器显示“A magnetic field”字符；没有检测到磁场时，item为1，串口监视器显示“There is no magnetic field”字符，如下图。

![](media/f8d75124bf69e0602ff2f90d0181accf.png)

## 实验十四 DHT11温湿度传感器检测温湿度

实验说明

在这个套件中，有一个keyes brick DHT11温湿度传感器，它主要采用DHT11
温湿度传感器元件。它是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术，确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件，并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。

实验中，我们利用这个传感器测试当前环境中的温湿度，并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick DHT11温湿度传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/503e081e14d92c55a07ab083e4abae98.png)

测试代码

![](media/255989d90131bcac379ba083ae5bb652.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/44ac38f4ce570af34bd2a4acec2bacb5.png)单元内，找到以下元件。

![](media/5d0b4e5aeb803aa7a6bc085ed97aaa7d.png)

2\. 我们把管脚设置为3，选择获取温度和获取湿度。

3\. 设置两个小数变量，分别为val1和val2，将所测结果赋值给val1和val2。

4\.
串口监视器显示val1和val2的值，显示前需设置波特率（我们默认设置为9600，可更改）。

5\.
显示时，我们在数据后面添加单位。如果温度单位直接设置为℃，测试结果会出现乱码，所以我们直接用C代替℃；湿度单位直接设置为%。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示当前环境中的温湿度数据，如下图。

![](media/e3ef56e8ef77a6800900f54f1b866a25.png)

## 实验十五 激光头传感器模块检测实验

实验说明

在这个套件中，有一个keyes brick DHT11激光头传感器模块，它主要由1个铜材半导体激光管元件组成。控制时，我们需要在模块S端输入高电平信号，模块开始工作，激光管发射出红色激光信号。

实验中，我们只是控制这个传感器模块上的激光头循环发射激光。

实验器材

keyes brick 激光头传感器模块*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/e1c8fa37ea7fa8323401ffaef44d684d.png)

测试代码

![](media/2b0b2a120366fd79ef49858a98f96f02.png)

代码说明

1\.
在实验中，我们需要在库文件的![](media/ec9131ecf726cda7bb2387663485338e.png)单元内，找到以下元件。

![](media/afab0a6268a9bf46842f6efbc5cb5e48.png)

2\.
我们把管脚设置为2，设置为高时，模块上激光发射；设置为低时，模块上激光停止发射。

测试结果

上传测试代码成功，上电后，模块上激光发射1秒，停止发射1秒，循环交替。

## 实验十六 麦克风声音传感器检测声音大小

实验说明

在这个套件中，有一个keyes brick
麦克风声音传感器，它主要采用一个高感度麦克风元件和LM386芯片。高感度麦克风元件用于检测外界的声音。利用LM386芯片搭建合适的电路，我们对高感度麦克风检测到的声音进行放大，最大倍数为200倍。使用时我们可以通过旋转传感器上电位器，调节声音的放大倍数。调节时，顺时针调节电位器到尽头，放大倍数最大。

实验中，我们利用这个传感器测试当前环境中的声音大小对应的模拟值，声音越大，模拟值越大；并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick 麦克风声音传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/fc530619cb421e9471fefe33552ba1d0.png)

测试代码

![](media/833eb590edc6fa7ad51160aaa8a12dd2.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/a0b997a0f7d4d4ef39500610e75146dc.png)单元内，找到以下元件。

![](media/6123350ddec8d68e9a51179a221a1b39.png)

2\. 我们把管脚设置为A3。

3\. 设置1个整数变量item，将所测结果赋值给item。

4\.
串口监视器显示item的值，显示前需设置波特率（我们默认设置为9600，可更改）。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示对应模拟值。实验中，我们顺时针旋转电位器和对准MIC头大声说话，可以看到模拟值数据变大，如下图。

![](media/6a427c1be7f4a35541cc1264b864941f.png)

## 实验十七 有源蜂鸣器模块播放声音

实验说明

在这个套件中，包含一个有源蜂鸣器模块，一个无源蜂鸣器模块。在实验四中，介绍了无源蜂鸣器模块播放各个频率声音的方法。这个实验中，我们控制有源蜂鸣器发出声音。有源蜂鸣器元件内部自带震荡电路，控制时，我们只需要在蜂鸣器元件正极输入5V电源，负极接地，蜂鸣器就自动响起。

实验中，我们只是控制这个模块上有源蜂鸣器的循环响起声音。

实验器材

keyes brick 有源蜂鸣器模块*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/f7c5a1352db67097abe65d42a532174d.png)

测试代码

![](media/4e80220dd4cbac42c3ba9a119cade1d3.png)

代码说明

1\.
在实验中，我们需要在库文件的![](media/ec9131ecf726cda7bb2387663485338e.png)单元内，找到以下元件。

![](media/297cb814d37107c4e5c4b909a529779f.png)

2\.
我们把管脚设置为3，设置为高时，模块上有源蜂鸣器响起；设置为低时，模块上有源蜂鸣器关闭声音。

测试结果

上传测试代码成功，上电后，模块上有源蜂鸣器响起1秒，关闭1秒，循环交替。

## 实验十八 巡线传感器检测黑白线

实验说明

在这个套件中，有一个keyes brick 巡线传感器，它主要采用1个TCRT5000
反射型
黑白线识别传感器元件。传感器的原理是利用红外线对颜色的反射率不一样，将反射信号的强弱转化成电流信号。传感器没有检测到物体或者检测到黑色物体时，信号端为高电平；检测到白色物体时，信号端为低电平；它的检测高度为
0—3cm。我们可以通过旋转传感器上电位器，调节灵敏度，即调节检测高度。当旋转电位器，是传感器上D1 LED介于不亮与亮之间的临界点时，灵敏度最好。

实验中，我们通过读取模块上S端高低电平，判断传感器检测到的物体颜色（黑白）；并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick巡线传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/2ddefb6a709fe733d09e4f1def9c3449.png)

测试代码

![](media/9d0f638fc6f7197f881b09db8fd92e9d.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/3904f53520a3ef6a516edd28d28edf8c.png)单元内，找到以下元件。

![](media/58c23d650e659214443da06b02d5c259.png)

2\. 其它设置方法和实验十一类似，这里就不多做介绍了。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示对应数据和字符。实验中，当传感器没有检测到物体或者检测到黑色物体时，item为1，串口监视器显示“Black”字符；检测到白色物体（能够反光）时，item为0，串口监视器显示“White”字符，如下图。

![](media/173df5a84501789b3aa40d842b7d0fdb.png)

## 实验十九 左右倾斜检测

实验说明

在这个套件中，有一个keyes brick 倾斜模块传感器，它主要采用SW-200D
振动开关元件。SW-200D
振动开关元件是滚珠型倾斜感应单方向性触发开关。该振动开关两端一端镀金，一端镀银；镀金端为触发端，镀银端为导电端。当传感器在水平位置或向导电端（镀银）倾斜时，开关元件为开路OFF状态，传感器信号端输出高电平；当传感器向触发端（镀金）倾斜时，开关元件为闭路ON状态，传感器信号端输出低电平。

实验中，我们通过读取模块上S端高低电平，判断传感器倾斜的方向；并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick 倾斜模块传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/8b09000e1b5aeaa0c2462f1cc59e79aa.png)

测试代码

![](media/25ccecd25746b51e95be6a393bf526d6.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/3904f53520a3ef6a516edd28d28edf8c.png)单元内，找到以下元件。

![](media/71d3f9e9488f7518cf057b7b2868f804.png)

2\. 其它设置方法和实验十一类似，这里就不多做介绍了。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示对应数据和字符。实验中，手握传感器白色接口，当传感器向右倾斜时，item为0，串口监视器显示“Right”字符；当传感器向左倾斜时，item为1，串口监视器显示“Left”字符，如下图。

![](media/3b83f1385e5c5ecaf816c678ab1a9a4a.png)

## 实验二十 碰撞检测

实验说明

在这个套件中，有一个keyes brick
碰撞传感器，它主要采用1个轻触开关。当物体碰到轻触开关弹片，下压时，传感器信号端为低电平，自带D1 LED亮起；否则传感器信号端为高电平，自带D1 LED熄灭。该传感器常用于3D打印机内做限位开关。

实验中，我们通过读取模块上S端高低电平，判断传感器弹片是否下压；并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick 碰撞传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/eca93b03627cc8323842b65ce3af7773.png)

测试代码

![](media/1d49f099cb4718e99de1f83feba92a77.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/3904f53520a3ef6a516edd28d28edf8c.png)单元内，找到以下元件。

![](media/ae911370998a106d2b709a2b4e426111.png)

2\. 其它设置方法和实验十一类似，这里就不多做介绍了。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示对应数据和字符。实验中，传感器上弹片下压时，item为0，串口监视器显示“The end of his!”字符；当松开弹片时，item为1，串口监视器显示“All going well!”字符，如下图。

![](media/4c53611d917826bda5d4b6cb5338628f.png)

## 实验二十一 测试当前温度

实验说明

在这个套件中，有一个keyes brick LM35温度传感器，它主要采用LM35DZ传感器元件。该元件的输出电压与摄氏温标呈线性关系，转换公式如式，0时输出为0V，每升高1℃，输出电压增加10mV。

实验中，我们利用这个传感器测试当前环境中温度的大小；并且，我们在串口监视器上显示测试结果。

实验器材

keyes brick LM35温度传感器*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/eb663e7c2538020c49cb5a3c1e63fd36.png)

测试代码

![](media/570d360e347a02276aa92d73ad74ca03.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/a0b997a0f7d4d4ef39500610e75146dc.png)单元内，找到以下元件。

![](media/3752aba75b98668ab1bc9714b90c77d6.png)

2\. 我们把管脚设置为A3。

3\.
设置1个小数变量val，将所测结果赋值给val。这val就是当前环境中的温度，在库文件中，已经添加了计算公式。

4\.
串口监视器显示测试的温度值，显示前需设置波特率（我们默认设置为9600，可更改）。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示当前环境中的温度数值，如下图。

![](media/be07c4154db275280c29c2502001d56a.png)

## 实验二十二 控制继电器开关

实验说明

在这个套件中，包含一个5V 单路继电器模块。它主要采用HK4100F-DC 5V-SHC继电器元件。继电器有3个绿色接线柱用于外接电路，分别为NO COM和NC端（背后丝印）。当继电器没有接控制信号时，COM端和NC端连通，COM端和NO端断开。

控制时，我们把GND接单片机GND，VCC接单片机5V,S接单片机数字口。当S信号端设置为高电平时，继电器开启，继电器COM端和NC端断开，COM端和NO端连通；S信号端设置为低电平时，继电器关闭，继电器COM端和NC端连通，COM端和NO端断开。

实验中，我们只是控制继电器NO端和COM端循环连接和断开。

实验器材

keyes brick 5V 单路继电器模块*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P双头XH2.54连接线*1

USB线*1

接线图

![](media/3864e636470e4333bac13335171ecb9e.png)

测试代码

![](media/a6e5909ba854a3c8f320b32a0ce98b9c.png)

代码说明

1\.
在实验中，我们需要在库文件的![](media/ec9131ecf726cda7bb2387663485338e.png)单元内，找到以下元件。

![](media/99ea1820d6b0c702053cee8dde3ddfed.png)

2\.
我们把管脚设置为3，设置为高时，继电器上NO端和COM端连接，NC端和COM端断开；设置为低时，继电器上NO端和COM端断开，NC端和COM端连接。

测试结果

上传测试代码成功，上电后，模块上NO端和COM端连接1秒，断开1秒，循环交替。

# 模块组合实验课程

前面课程中，我们单独测试了传感器/模块的功能，功能比较单一。在此，我们可以将多个传感器/模块搭配使用，组合出各种各样的功能。传感器/模块种类比较多，我们只是选择几款比较经典的组合实验。你们也可以根据自己的想法，自己设置代码，组合出你想要的特别的功能。

## 实验一 电位器调节灯光亮度

实验说明

在前面课程中，我们学习了利用代码调节LED模块上LED亮度的方法。学习利用可调电位器读取模拟值的方法。两个组合，我们利用可调电位器读取到的模拟值控制LED的亮度。设计代码时，模拟值的范围是0-1023；LED的亮度是由PWM值控制，范围为0-255。在这里，我们就需要用到映射功能，将0-1023数值映射到0-255。

设置成功后，我们就可以通过旋转电位器，控制模块上LED的亮度。

实验器材

keyes brick LED模块*1

keyes brick 可调电位器模块*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P 双头XH2.54连接线\*2

USB线*1

接线图

![](media/a23d038787a23a416ae422e31d25d1ac.png)

测试代码

![](media/17f8e6068db3f0e896a1f74b199d4138.png)

代码说明

实验中，主要新增的知识点就是映射功能

![](media/bbca4eda8ad62f0ae8b2d654e4821038.png)

将val1从范围0-1023映射到0-255，并赋值给val2。

测试结果

上传测试代码成功，上电后，旋转模块上电位器，就可以调节LED模块上的LED的亮度。

## 实验二 模拟户外灯

实验说明

在生活中我们可以看到户外有很多公共灯光。这些灯白天不亮，一到晚上，阳光暗下的时候，自动亮起；当阳光变亮时，这些灯就自动关闭。难道是有人在手动控制这些灯光？实际上不是的，实际上这些灯光上都安装有光敏传感器，这些传感器将外界阳光的亮暗，转换成对应数值。然后设置一个临界点，当超过临界点时，控制灯光熄灭，没有超过时，控制灯光亮起。

在这个实验中，我们利用套件中自带的光敏电阻传感器和LED模块模拟这一现象。

实验器材

keyes brick 光敏电阻传感器*1

keyes brick LED模块*1

keyes UNO PLUS开发板*1

传感器扩展板*1

3P 双头XH2.54连接线\*2

USB线*1

接线图

![](media/a1eeb6ae5596993f904fad4ee95ad46c.png)

测试代码

![](media/c106d320b2fd7c51486faf249930a7cf.png)

代码说明

1\. 在实验中，我们需要在库文件的![](media/a0b997a0f7d4d4ef39500610e75146dc.png)单元内，找到以下元件。

![](media/e1ba15b0e1ec99b61b1091e3d1e28ca4.png)

2\.
其他设置变量，控制设置，以及串口通信，我们都在前面课程中介绍了。可以参考第四章节的实验三和实验五。

测试结果

上传测试代码成功，利用USB线上电后，打开串口监视器，设置波特率为9600。串口监视器显示对应模拟值。实验中，我们把光敏电阻传感器用手握住，数据变小，小于600时，LED模块上LED亮起，否则熄灭。

![](media/a8df0a677a0d18c46651b684351cca9e.png)

## 实验三 旋转编码器模块控制2个灯

实验说明

在前面课程的实验七中，我们利用旋转编码器计数。在这里我们将它扩展下，通过得出的计数，我们用来控制2个LED模块上LED的亮灭。

设计代码时，我们需要对所得数据取绝对值。然后我们将数据除以二，得到余数，余数为0控制一个模块上LED亮，余数为1，另一个模块上LED亮。

实验器材

keyes brick 旋转编码器模块*1

keyes UNO PLUS开发板*1

keyes brick LED模块\*2

传感器扩展板*1

5P双头XH2.54连接线*1

3P 双头XH2.54连接线\*2

USB线*1

接线图

![](media/99ae9318ae4310bc00cc6cb9bcd9228d.png)

测试代码

![](media/801aff291f9108d8af55d771b8e47e74.png)

代码说明

1.  在实验中，我们我们在![](media/e02581ff3ba9f791b0e85a7e3b00cff8.png)找到![](media/50e87a140d1c8dc291c14175ff26b6fd.png)，然后改为![](media/6fa2d47576177780aace80e7551b132a.png)，

    即可设计对i取绝对值。

2.  在实验中我们我们在![](media/e02581ff3ba9f791b0e85a7e3b00cff8.png)找到
    ![](media/55a43cedf768bc1442cc1a6fc883abc2.png)，将+改成%，设置

    ![](media/8c4693ef06de33cfc924f3fb226923bc.png)，即将val1设置为val除以2的余数。

测试结果

上传测试代码成功，按照接线图接好线，上电后，旋转编码器，即可控制外接的2个LED模块上的LED的亮灭。

## 实验四 按键控制RGB灯

实验说明

在前面课程中，我们利用旋转编码器计数然后控制两个LED灯。在这一课程中，我们做一个扩展，我们利用代码，计算出按下模块上按键的次数。然后我们将所得数据除以三，所得余数为0 1 2三种。然后通过不同的余数，控制RGB模块上LED显示不同的颜色。

这样，我们就可以通过不断的按下按键，任意调节RGB模块上LED显示不同颜色了（三种颜色）。

实验器材

keyes brick 插件RGB模块*1

keyes UNO PLUS开发板*1

keyes brick 按键传感器*1

传感器扩展板*1

4P双头XH2.54连接线*1

3P 双头XH2.54连接线*1

USB线*1

接线图

![](media/078781eae4943c7caad31068883c8d54.png)

测试代码

![](media/6dd6d756635f483c8b0c4a5020c966e5.png)

代码说明

1.![](media/5db0709994452817eeab69a7e0045e44.png)；手按下一次传感器上按键后，![](media/cb88fec3954f6b005df3ebdb4b850826.png)和![](media/7b57c3c8171261309e453b10419eb4bb.png)数据变为不相等；![](media/cb88fec3954f6b005df3ebdb4b850826.png)
检测到一次为0，![](media/14e8ab93ab8c2534db1632c5915ec26f.png)就会加1一次。

2.当我们没有按下按键时，![](media/cb88fec3954f6b005df3ebdb4b850826.png)和![](media/7b57c3c8171261309e453b10419eb4bb.png)数据都为1，按下按键次数![](media/14e8ab93ab8c2534db1632c5915ec26f.png)不变，按键次数![](media/14e8ab93ab8c2534db1632c5915ec26f.png)除以3的余数![](media/70dd42db0b421a70ecdde6a06ce3559c.png)不变，RGB模块上LED显示的颜色也就不变。

3.当我们长按按键时，![](media/cb88fec3954f6b005df3ebdb4b850826.png)和![](media/7b57c3c8171261309e453b10419eb4bb.png)数据都为0，按下按键次数

![](media/14e8ab93ab8c2534db1632c5915ec26f.png)不变，按键次数![](media/14e8ab93ab8c2534db1632c5915ec26f.png)除以3的余数![](media/70dd42db0b421a70ecdde6a06ce3559c.png)不变，RGB模块上LED显示的颜色也就不变。

4.当我们按下一次按键（按下后松开）时，![](media/cb88fec3954f6b005df3ebdb4b850826.png)为0，![](media/7b57c3c8171261309e453b10419eb4bb.png)为1，按下按键次数![](media/14e8ab93ab8c2534db1632c5915ec26f.png)加1，按键次数![](media/14e8ab93ab8c2534db1632c5915ec26f.png)除以3的余数![](media/70dd42db0b421a70ecdde6a06ce3559c.png)变化，RGB模块上LED显示的颜色改变一次。

测试结果

上传测试代码成功，按照接线图接好线，利用USB上电后，打开串口监视器，设置波特率为9600；串口监视器显示![](media/70dd42db0b421a70ecdde6a06ce3559c.png)数据，不断按下按键，![](media/70dd42db0b421a70ecdde6a06ce3559c.png)数据在0 1
2中变化。当![](media/70dd42db0b421a70ecdde6a06ce3559c.png)为0时，RGB模块上LED显示红色；当![](media/70dd42db0b421a70ecdde6a06ce3559c.png)为1时，RGB模块上LED显示绿色；当![](media/70dd42db0b421a70ecdde6a06ce3559c.png)为2时，RGB模块上LED显示蓝色。

![](media/fce92e154aa64814afe298702aeb50b6.png)

## 实验五 温度控制RGB灯

实验说明

在前面课程中，我们利用按键手动控制RGB模块上LED灯的颜色。在这一课程中，我们利用一个LM35温度传感器检测当前环境的温度。然后利用检测到的温度数据控制RGB模块上LED灯的颜色。

生活中，我们可以把这个电路设计应用到水杯中。我们利用温度传感器检测到水杯温度，控制水杯上LED的颜色。这样我们就可以通过LED颜色，判断水的大概温度。

实验器材

keyes brick 插件RGB模块*1

keyes UNO PLUS开发板*1

keyes brick LM35温度传感器*1

传感器扩展板*1

4P双头XH2.54连接线*1

3P 双头XH2.54连接线*1

USB线*1

接线图

![](media/99dbb8f03be6d961c7970dfc462b0dc3.png)

测试代码

![](media/d0851f04ed5f6890b3e29468da1bc64d.png)

代码说明

1.实验中，检测并显示温度的方法和上一课中实验二十一一样。

2.检测到温度数据后通过设置![](media/f7dda577bbd8b3d50bdc489d2c48a007.png)控制RGB模块上的LED颜色，设置方法参考上一课中实验五知识点。

测试结果

上传测试代码成功，按照接线图接好线，利用USB上电后，打开串口监视器，设置波特率为9600；串口监视器显示当前环境中温度数值。当温度小于等于25℃时，RGB模块上的LED显示红色；当温度大于25℃且小于等于30℃时，RGB模块上的LED显示绿色；当温度大于30℃时，RGB模块上的LED显示蓝色。

![](media/8cc4a4f18f4bb6aeb5817136c15ea2b2.png)

## 实验六 障碍物报警实验

实验说明

在上一课实验十一中，我们利用避障传感器检测前方障碍物，结果在串口监视器显示。在这一实验中，我们利用检测结果控制一个有源蜂鸣器响起。

生活中，我们可以利用一个检测传感器控制一个有源蜂鸣器响起，做报警设备，如检测磁场（霍尔传感器）、检测倾斜（倾斜模块）等等。

实验器材

keyes brick 避障传感器*1

keyes UNO PLUS开发板*1

keyes brick 有源蜂鸣器模块*1

传感器扩展板*1

3P 双头XH2.54连接线\*2

USB线*1

接线图

![](media/21d4cf565e23053f0963c1de17c723f0.png)

测试代码

![](media/eeac57ef2f2c5a644a2add38b43e22dd.png)

代码说明

1.实验中代码设置和上一课中实验十一类似，只是将控制串口监视器显示换成了控制有源蜂鸣器的响起。

测试结果

上传测试代码成功，按照接线图接好线，上电后，检测到障碍物时，外接的有源蜂鸣器响起声音，否则有源蜂鸣器停止响起声音。

