# Microbit主板_教程


## 1. 关于BBC Micro:bit

---

### （1）Micro:bit是什么?

在我们开始学习keyes 人体感应套件之前，首先介绍Micro:bit主板，它是所有项目的核心。

Micro:bit是由ARM、巴克莱、element14、微软等机构与英国广播公司（BBC）合作推出的一款基于ARM架构的开源硬件平台，核心设备是32位Arm Cortex-M4带有FPU的微处理器，Micro:bit主板只有信用卡一半大小，但功能非常强大。Micro:bit V2.0主板拥有丰富的板资源，搭载了5×5可编程LED点阵、2颗可编程按键、加速度计、电子罗盘、温度计、可触摸感应的Logo、MEMS麦克风、低功耗蓝牙等电子模块，背面还有一个蜂鸣器，可以在没有外部设备的情况下也可以播放各种声音。此外，Micro:bit主板还支持休眠模式，用户可以长按Micro:bit主板后面的复位&电源按钮，使进入睡眠模式，降低电池功耗。

Micro:bit开发板的功能强大，具有易用性和扩展性，底部齿轮设计的金手指，它可以很好的通过固定鳄鱼夹与各种电子元件互动。支持读取传感器数据，控制舵机与RGB灯带等，也可以插入扩展板连接各种传感器。Micro:bit支持多种代码及图形化编程平台，支持几乎所有的PC和移动设备，具有免安装驱动，电子模块集成度高，且带有串口监控功能，方便调试！

Micro:bit应用非常广泛，可以用于编写电子游戏，声光互动，机器人控制，科学实验，可穿戴装置开发等，可以实现任何酷炫的小发明，无论是机器人还是乐器，没有做不到只有想不到。创造更多的创意作品。

---

### （2）Micro:bit正面和反面面板介绍：                               

#### Micro:bit正面面板介绍：

![Img](./media/1.png)

① 可编程按钮（自定义功能按钮）: 归根结底它就是一个按钮，对于按钮来说只有一个功能按下去，但是我们可以通过编程使得按钮按下去实现不同的功能。这些按钮组合起来可以实现三种操作，单独按下以及同时按下。

② LED 点阵：由一个一个的 LED 灯组成，灯从大的方向来说就只有两种状态：开和关，也就是我们平时说的亮和灭，但是从明和暗这个方向来说，它又可以分成不同的等级，也就是我们平时说的亮一点，就好比是成绩，分数可以从 0 到 100，划分不同的层次。这个点阵可以用来显示：图像，文字，数字等。同时这些 LED 灯还是一个光线传感器。

③ GPIO 引脚：增加开发板的功能，可以与其他的外置传感器进行交互。

④ 3V 电源引脚：可以为外接传感器进行供电。

⑤ GND 接地引脚。

⑥ 触摸感应 Logo，首先 Logo 没有什么好说的，就是一个图案， 但是同时它还是一个触摸感应器，触摸感应这里面可以有三种不同的操作：

- 点按：摸一下立刻松开

- 长按：按住超过一定的时间

- 松开：手指离开

⑦ 麦克风指示灯：当使用麦克风进行声音录制的时候会亮起。

#### Micro:bit反面面板介绍：

![Img](./media/2.png)

① 声音和蓝牙天线，通过这根天线，可以实现不同开发板之间通过声音进行通信，或者使用蓝牙与其他的设备进行通信。

② 处理器以及温度传感器：传感器是开发板的大脑，负责获取，解码以及指令的执行。同时温度传感器可以感知外界温度的变化

③ 指南针：测量磁场方向以及磁场强度，它可以测量三个维度的磁场。

④ 加速度计：测量三个维度的力（包括重力），因此可以用来监测开发板的振动或者移动。

⑤ 引脚：为外接的微型配件进行供电。

⑥ micro USB 接口: 用于充电以及将程序写入开发板。

⑦ 红色指示灯：当烧录程序或者接上电源的时候会亮起。

⑧ 重置按钮：使得烧录好的程序重新执行。

⑨ 电池盒接口：使用3.3V电池来对开发板进行供电。

⑩ USB 芯片接口：烧录代码，与电脑的 USB 接口进行串行数据的发送和接受。

⑪ 扬声器：也就是我们平时所说的喇叭，可以进行声音的播放。

⑫ 麦克风：也就是我们平时所说的话筒，话筒可以收到我们的声音，声音有大有小（在microbit中使用响度来标识），通过声音的大小，我们可以对板子实现控制。

⑬ 红色电源指示灯：当开发板接上电源后将会亮起。

⑭ 黄色指示灯：当将程序写入的时候会亮起。

⑮ 复位按键：恢复板子写入程序的最开始状态，也就是重新开始执行写入的程序。如果进行长按的话将会使得开发板进入休眠状态。

有关更多内容，请参阅：[https://tech.microbit.org/hardware/](https://tech.microbit.org/hardware/)

[https://microbit.org/new-microbit/](https://microbit.org/new-microbit/)

[https://www.microbit.org/get-started/user-guide/overview/](https://www.microbit.org/get-started/user-guide/overview/)

[https://microbit.org/get-started/user-guide/features-in-depth/](https://microbit.org/get-started/user-guide/features-in-depth/)

---

### （3）Micro:bit V2 引脚配置介绍，如下图所示：
 
![Img](./media/3.png)

Micro:bit V2 引出的引脚中，其引脚功能分类如下表所示：

| GPIO | P0，P1，P2，P3，P4，P5，P6，P7，P8，P9，P10，P11，P12，P13，P14，P15，P16，P19，P20 |
| :--: | :--: | 
| ADC/DAC | P0，P1，P2，P3，P4，P10 |
| IIC | P19（SCL），P20（SDA） |
| SPI | P13（SCK），P14（MISO），P15（MOSI） |
| PWM（常用） | P0，P1，P2，P3，P4，P10 |
| PWM（不常用） | P5、P6、P7、P8、P9、P11、P12、P13、P14、P15、P16、P19、P20 |
| 已占用 |P3(LED Col3)，P4(LED Col1)，P5(Button A)，P6(LED Col4)，P7(LED Col2)，P10(LED Col5)，P11(Button B) |

详细信息请参考官方网站：[https://tech.microbit.org/hardware/edgeconnector/](https://tech.microbit.org/hardware/edgeconnector/)

[https://microbit.org/guide/hardware/pins/](https://microbit.org/guide/hardware/pins/)

--- 
### （4）Micro:bit主板使用注意事项：

a. Micro:bit主板上有很多精密的电子元件，建议戴上硅胶保护套进行使用，防止短路。

b. Micro:bit主板的IO口驱动能力很弱，IO口电流不足300mA，请勿接大电流器件（例如大舵机MG995、直流电机），否则会烧坏Micro:bit主板，使用前必须完全了解清楚你所使用的器件电流情况，一般建议配搭Micro:bit扩展板进行使用。

c. 供电建议从Micro:bit主板的USB口进行供电，或者Micro:bit主板上的3V电池座接口。Micro:bit主板本身IO口是3V电平，所以是不支持5V传感器的，如需支持5V传感器需要使用 Micro:bit扩展板。

d. 使用与Micro:bit主板LED点阵的共用引脚（如P3、P4、P6、P7、P10），记得在代码中把LED点阵禁用掉，否则会有LED点阵乱亮的现象。

e. 不要使用IO 口P19、P20，P19和P20是不能当做IO口来使用的，虽然makecode软件上显示可以使用，实际是用不了的！只能用于I2C通讯。

f. 3V电池座接口上不能使用超过3.3V电池，插上去很容易会把Micro:bit主板烧坏。

g. 禁止放在金属制品上使用，以免发生短路。

总之：Micro:bit主板就像是一台微型计算机，它使编程变得有形，并促进数字创造力。关于编程环境，BBC提供了一个在线编程网站：[https://microbit.org/code/](https://microbit.org/code/) ，该网站有一个易于使用的图形化编程MakeCode编辑器。

---

## 2. 关于MakeCode编辑器

MakeCode编辑器网站：[https://makecode.microbit.org/#editor](https://makecode.microbit.org/#editor) 

MakeCode编辑器详细的使用说明方法请参考链接：[https://www.keyesrobot.cn/projects/MakeCode/zh-cn/latest/](https://www.keyesrobot.cn/projects/MakeCode/zh-cn/latest/)

---

## 3. 教程

<span style="color: rgb(255, 76, 65);"> Micro:bit 基础课程是使用Micro:bit主板自带的传感器模块和LED点阵。</span>

---

### 项目01 心跳

![Img](./media/4.png)

#### 1. 实验说明：

首先先来练习一个不需要其他辅助元件，只需要一块Micro:bit主板，一根Micro USB数据线与一台计算机的简单实验，让Micro:bit主板上的点阵显示“心跳”，这是一个让Micro:bit主板和计算机通信的实验，这也是一个入门实验，希望可以带领大家进入Micro:bit的魔幻世界。

#### 2. 准备：

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）打开离线版本或Web版本的MakeCode。 

![Img](./media/5.png)

如果是选择通过导入 **.Hex** 文件来加载项目，请单击“导入”。(方法请参照链接：[http://makecode-ide.readthedocs.io/](http://makecode-ide.readthedocs.io/)) 

![Img](./media/6.png)

如果要一一拖动代码块，请单击“**新建项目**”。

![Img](./media/7.png)

#### 3. 实验代码：                                                                                

![Img](./media/8.png)

#### 4. 实验结果:  

按照之前的方式将代码下载到Micro:bit主板，Micro USB数据线不要拔下来，利用Micro USB数据线上电，Micro:bit主板上的LED点阵屏切换显示“❤”图案和“![Img](./media/9.png)”图案，循环进行。

![Img](./media/10.png)

![Img](./media/11.png)

<span style="color: rgb(255, 76, 65);">如果存在下载问题，请断开Micro USB线和Micro:bit主板，然后重新连接它们并重新打开MakeCode编辑器，以尝试再次下载。
</span>

#### 5. 代码说明:

![Img](./media/83.png)

仅运行一次以启动程序。

![Img](./media/84.png) 

程序循环运行。 

![Img](./media/85.png)

在Microbit主板上的LED点阵上绘制特定图案。

---

### 项目02 LED点阵中单个LED显示

![Img](./media/12.png)

#### 1. 实验说明：

Micro:bit主板的LED点阵共由25个发光二极管组成，5个一组，分别对应X和Y方向，形成一个5×5的矩阵，且每个发光二极管是放置在行线（X）和列线（Y）的交叉点上，我们可以通过设置坐标点来实现对25个LED中某一个LED的控制。例如，想要LED点阵中第1行第1个LED点亮，可以设置坐标点为（0，0）；第1行第3个LED点亮，可以设置坐标点为（2，0）；第1列第5个LED点亮，可以设置坐标点为（0，4）；第3列第2个LED点亮，可以设置坐标点为（2，1），依此类推。

![Img](./media/13.png)

#### 2. 准备：

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）打开离线版本或Web版本的MakeCode。 

![Img](./media/5.png)

如果是选择通过导入 **.Hex** 文件来加载项目，请单击“导入”。(方法请参照链接：[http://makecode-ide.readthedocs.io/](http://makecode-ide.readthedocs.io/)) 

![Img](./media/6.png)

如果要一一拖动代码块，请单击“**新建项目**”。

![Img](./media/7.png)

#### 3. 实验代码：                                                                                

![Img](./media/14.png)

#### 4. 实验结果：

按照之前的方式将代码下载到Micro:bit主板，Micro USB数据线不要拔下来，利用Micro USB数据线上电，我们就可以看到切换坐标点(1,0)的LED的亮灭状态，持续0.5s，再次切换坐标点(1,0)的LED的亮灭状态，持续0.5s；点亮坐标点(3,4)的LED，持续0.5s，熄灭坐标点(3,4)的LED，持续0.5s。循环进行。

![Img](./media/15.png)

![Img](./media/16.png)

#### 5. 代码说明:

![Img](./media/83.png) 

仅运行一次以启动程序。

![Img](./media/84.png) 

程序循环运行。

![Img](./media/86.png)

数字打开或关闭Microbit主板上的LED点阵屏。

![Img](./media/87.png)

切换处于坐标x0 y0的LED亮度，数字0可以更改成其他数字。

![Img](./media/88.png)

点亮处于坐标x0，y0的LED，数字0可以更改成其他数字。

![Img](./media/89.png)

熄灭处于坐标x0 y0的LED，数字0可以更改成其他数字。

![Img](./media/90.png)

延时，单位为毫秒。

---

### 项目03 5 x 5 LED点阵图案显示

![Img](./media/12.png)

#### 1. 实验说明： 
                                                                               
点阵在我们生活中很常见，很多都有用到它，比如LED广告显示屏，电梯显示楼层，公交车报站等等。

Micro:bit主板的LED点阵共由25个发光二极管组成，上一课我们已经讲过通过设置坐标点来实现对LED点阵的25个LED中的某个LED的控制，这样可以通过设置多个坐标点控制多个LED的亮灭使得LED点阵能够显示图案、数字、字符串。我们也可以在特定代码中通过点击 LED点阵的灰白色小正方形点亮 LED点阵对应的LED来实现LED点阵显示图案、数字、字符串。除了上述方法还可以使用自定义图案使LED点阵显示图案。

#### 2. 准备：

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）打开离线版本或Web版本的MakeCode。 

![Img](./media/5.png)

如果是选择通过导入 **.Hex** 文件来加载项目，请单击“导入”。(方法请参照链接：[http://makecode-ide.readthedocs.io/](http://makecode-ide.readthedocs.io/)) 

![Img](./media/6.png)

如果要一一拖动代码块，请单击“**新建项目**”。

![Img](./media/7.png)

#### 3. 实验程序：

![Img](./media/17.png)

#### 4. 实验结果： 

用同样的方法将代码下载到Micro:bit主板，Micro USB数据线不要拔下来，利用Micro USB数据线上电，我们就可以看到Micro:bit主板的5×5 LED点阵开始显示数字1、2、3、4、5，然后循环显示“向下”图案![Img](./media/18.png)、字符串“Hello!”、“心”图案![Img](./media/19.png)、“东北”方向图案![Img](./media/20.png)、“东南”方向图案![Img](./media/21.png)、“西南”方向图案![Img](./media/22.png)和“西北”方向图案![Img](./media/23.png)。

#### 5. 代码说明:

![Img](./media/91.png)

在LED点阵显示数字。

![Img](./media/92.png)

在Microbit主板上的LED点阵上绘制任意图案。

![Img](./media/93.png)

LED点阵滚动显示字符串。

![Img](./media/94.png)

LED点阵点亮对应的LED显示各个方向的箭头图案。

![Img](./media/95.png)

清空屏幕。

---

### 项目04 可编程按键

![Img](./media/24.png)

#### 1. 实验说明：

![Img](./media/25.png) 

按键可以控制电路的通断，把按键接入电路中，不按下按键的时候电路是断开的，一按下按键电路就通啦，但是松开之后就又断了。可是为什么按下才通电呢？这得从按键的内部构造说起。没按下之前，电流从按键的一端过不去另一端，按键的两端就像两座山，中间隔着一条河，我们在这座山过不去另一座山；按下的时候，按键内部的金属片把两边连接起来让电流通过，就像搭了一座桥，把两座山连接起来。

按键内部结构如图：![Img](./media/26.png)，未按下按键之前，1、2就是导通的，3、4也是导通的，但是1、3或1、4或2、3或2、4是断开（不通）的；只有按下按键时，1、3或1、4或2、3或2、4才是导通的。

Micro:bit主板有三个按键，反面的是复位按钮，正面的是两个可编程按键，通过对两个可编程按键组合可以有三种组合，作为输入元件。我们结合上节课的LED点阵，一起来学习按键吧。按下Micro:bit主板上按键A，条形图高度值增加5，表现为LED点阵亮的行数增加；按下按键B，减少条形图高度，表现为LED点阵亮的行数减少。
                   
#### 2. 准备：

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）打开离线版本或Web版本的MakeCode。 

![Img](./media/5.png)

如果是选择通过导入 **.Hex** 文件来加载项目，请单击“导入”。(方法请参照链接：[http://makecode-ide.readthedocs.io/](http://makecode-ide.readthedocs.io/)) 

![Img](./media/6.png)

如果要一一拖动代码块，请单击“**新建项目**”。

![Img](./media/7.png)

#### 3. 实验程序：
                                                                              
**（3）完整的代码程序**

![Img](./media/27.png)

#### 4. 实验结果：

用同样的方式将程序下载到Micro:bit主板，Micro USB数据线不要拔下来，利用Micro USB数据线上电，按下Micro:bit主板上按键A，条形图高度值增加5，表现为LED点阵亮的行数增加；按下按键B，减少条形图高度，表现为LED点阵亮的行数减少。

#### 5. 代码说明:

![Img](./media/96.png)

设置变量“x”的初始值为0。 

![Img](./media/97.png)

以1为幅度更改变量值x，数字1可以改成其他数字。 

![Img](./media/98.png)

按下micro: bit主板上正面的按键。

![Img](./media/99.png)

点亮LED点阵中LED绘制条形图，最高点亮25个LED。

![Img](./media/100.png)

如果ture里的表达式为真，则执行“则”下面的代码。

![Img](./media/101.png)

获取变量x。

---

### 项目05 学习测温度

#### 1. 实验说明：

Micro:bit主板实际上并不带温度传感器，而是采用nRF52833芯片内置的温度传感器进行温度检测，所以检测的温度更接近芯片的温度，可能与周围环境温度存在一定的误差。在这一课程中，我们利用该传感器测试当前环境中的温度，并通过检测的温度范围来控制LED点阵显示不同的图案。

<span style="color: rgb(255, 76, 65);">注意：Micro:bit主板的温度传感器在这里：</span>

![Img](./media/28.png)

#### 2. 准备：

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）打开离线版本或Web版本的MakeCode。 

![Img](./media/5.png)

如果是选择通过导入 **.Hex** 文件来加载项目，请单击“导入”。(方法请参照链接：[http://makecode-ide.readthedocs.io/](http://makecode-ide.readthedocs.io/)) 

![Img](./media/6.png)

如果要一一拖动代码块，请单击“**新建项目**”。

![Img](./media/7.png)

#### 3. 实验程序：

通过温度控制Micro:bit主板上点阵显示不同图案（<span style="color: rgb(255, 76, 65);">注意：程序中的温度值可以根据当地环境适当的调整</span>）

![Img](./media/29.png)

#### 4. 实验结果：

按照之前的方式将程序下载到Micro:bit主板，Micro USB数据线不要拔下来，利用Micro USB数据线上电，外界环境中的温度小于35℃时，Micro:bit主板的5×5LED点阵中显示图案![Img](./media/30.png)，用手按住Micro:bit主板的温度传感器，温度大于等于35℃时，5×5LED点阵中显示图案![Img](./media/31.png)。

#### 5. 代码说明:

![Img](./media/103.png)

micro: bit主板上的温度传感器检测外界温度。

![Img](./media/102.png)

如果ture里的表达式为真，则执行“则”下面的代码；如果ture里的表达式为假，则执行“否则”下面的代码。

---

### 项目06 地磁传感器

![Img](./media/32.png)

#### 1. 实验说明：

本实验项目主要介绍Micro:bit地磁传感器的使用，地磁传感器除了检测地磁场强度外，还能当作指南针确定方向，同时也是航姿参考系统(AHRS)的重要组成部分。Micro:bit V2主板采用的是LSM303AGR 地磁传感器，磁场动态范围为±50 gauss。在micro:bit V2主板中，磁力检测、指南针积木块均用到了磁力计栏，本实验中，将先介绍指南针，然后查看磁力计原始数据。常见的指南针主要部件是一根磁针，在地磁场的作用下可以转动并指向地磁北极（地磁北极是在地理南极附近），用来辨别方向。

micro:bit内部的一个地磁传感器（磁力计、指南针），我们可以读取这个磁力计的读数来判断方位，得到相对于北磁极的数值。返回值是0到360之间的数值，在磁力计首次开始工作（带到新位置后）时系统会自动要求我们对micro:bit主板校准，正确的校准方式是旋转micro:bit主板。需要注意的是，附近要是有金属物件可能会影响读数和校准准确性。

#### 2. 准备：

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）打开离线版本或Web版本的MakeCode。 

![Img](./media/5.png)

如果是选择通过导入 **.Hex** 文件来加载项目，请单击“导入”。(方法请参照链接：[http://makecode-ide.readthedocs.io/](http://makecode-ide.readthedocs.io/))

![Img](./media/6.png)

如果要一一拖动代码块，请单击“**新建项目**”。

![Img](./media/7.png)

#### 3. 实验程序1：

按下按键A的时候，可以在屏幕上显示磁力计的读数。

![Img](./media/33.png)

程序说明：首先必须对Micro:bit进行校准，因为每个地方地磁场不同，对结果有比较大的的影响，如果是第一次使用指南针，Micro:bit会自动提示需要校准。

#### 4. 实验结果1:  

按照之前的方式将程序1下载至Micro: bit主板，micro USB数据线不要拔下来，利用Micro USB数据线上电，按下Micro:bit主板上正面按键A时，Micro:bit主板首先提示校准，屏幕(LED点阵)提示:“TILT TO FILL SCREEN”,然后进入校准界面，校准方式为：旋转Micro:bit主板，使得屏幕(LED点阵)画一个封闭的正方形（25个LED都点亮），如下图所示：

![Img](./media/34.png)

当封闭的正方形画好后，会显示一个“笑脸”图案![Img](./media/35.png)，表示校准完成。

校准完成后，当每次按下按键A的时候，直接在屏幕上显示磁力计读数，北、东、南、西对应0°、90°、180°、270°。

#### 5. 实验程序2：

朝不同的方向旋转磁力计，LED点阵显示对应的方向图案。
![Img](./media/36.png)

该代码块是可以持续磁力计的读数来确定方向，并让箭头指向当前的磁北极。

![Img](./media/37.png)

如上图所示，如果读数在292.5和337.5之间，就让显示屏显示一个指向右上方的箭头，由于程序里不能输入0.5，所以取的判断数值是293和338。之后再加入其它逻辑判断条件，就得到了完整的程序。

![Img](./media/38.png)

#### 6. 实验结果2：

按照之前的方式将程序2下载到Micro:bit主板，Micro USB数据线不要拔下来，利用Micro USB数据线上电，提示校准（校准方法请参考:上面实验程序1部分），校准完成后，旋转移动Micro:bit主板，可以看到Micro:bit主板上LED点阵显示各方向图案。

#### 7. 代码说明:

![Img](./media/104.png)

校准指南针。

![Img](./media/105.png)

指南针朝向角度。

![Img](./media/106.png)

LED点阵显示指南针朝向角度。

---

### 项目07 加速度传感器

![Img](./media/39.png)

#### 1. 实验说明：

Micro:bit V2主板内置有LSM303AGR 重力加速度传感器（加速度计），其具有8/10/12 bits的分辨率，程序可设置量程为1g、2g、4g、8g，我们常使用加速度计来检测机器的姿态。在本实验项目中，将介绍加速度传感器（加速度计）对几个特殊姿态的检测。

#### 2. 准备：

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）打开离线版本或Web版本的MakeCode。 

![Img](./media/5.png)

如果是选择通过导入 **.Hex** 文件来加载项目，请单击“导入”。(方法请参照链接：[http://makecode-ide.readthedocs.io/](http://makecode-ide.readthedocs.io/)) 

![Img](./media/6.png)

如果要一一拖动代码块，请单击“**新建项目**”。

![Img](./media/7.png)

#### 3. 实验程序：

对Micro:bit不同的操作，LED点阵显示对应的数字。

![Img](./media/40.png)

#### 4. 实验结果: 

按照之前的方式将程序下载到Micro:bit主板，利用Micro USB数据线上电，将Micro:bit主板晃动，则可见Micro:bit显示数字1（表明只要有晃动，无论朝哪个方向晃动，该条件都将满足）。

当Micro:bit主板的Logo朝上时，LED点阵显示数字2，Logo朝上示意图如下所示：

![Img](./media/41.png)

同理，Micro:bit主板的Logo朝上时，LED点阵显示数字3(倒立的3)，Logo朝下示意图如下所示：

![Img](./media/42.png)

当屏幕朝上（指的是LED点阵朝上）时，LED点阵显示数字4。如下图所示：

![Img](./media/43.png)

同理，当屏幕朝下（指的是LED点阵朝下）时，LED点阵显示数字5。

当Micro:bit 主板向左倾斜（<span style="color: rgb(255, 76, 65);">是指LED点阵先朝上，然后再往左边倾斜</span>）时，LED点阵显示数字6。如下图所示：

![Img](./media/44.png)

同理，当Micro:bit主板向右倾斜（<span style="color: rgb(255, 76, 65);">是指LED点阵先朝上，然后再往右边倾斜</span>）时，LED点阵显示数字7。如下图所示：

![Img](./media/45.png)

当不小心碰到Micro:bit主板使其从桌面掉落，则为做自由落体运动，此时，Micro:bit主板满足自由落体的条件，则LED点阵显示数字8。（<span style="color: rgb(255, 76, 65);">注意：此方法操作时，很容易把micro:bit主板摔坏，不建议操作</span>）

<span style="color: rgb(255, 76, 65);">注意：（3g、6g、8g， 如果需要满足此条件，则需要达到3倍，6倍，8倍重力加速度甩动Micro:bit主板。如果你们有兴趣的话，这部分程序可以自己添加）</span>

#### 5. 代码说明:

![Img](./media/107.png)

完成一个特定的动作(如晃动microbit主板等）时执行操作。

---

### 项目08 光照强度检测

![Img](./media/46.png)

#### 1. 实验说明：

本实验将介绍Micro:bit对外界光照强度的检测，由于Micro:bit并不自带光敏传感器，对外界光照强度的检测是通过LED矩阵进行的，LED矩阵被用来感知周围的光，并反复地将LED转换成输入，并采样电压衰减时间。这样检测出来的光照强度大于100时，LED矩阵显示“太阳”标志；否则，LED矩阵上LED灯全部点亮。

#### 2. 准备：

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）打开离线版本或Web版本的MakeCode。 

![Img](./media/5.png)

如果是选择通过导入 **.Hex** 文件来加载项目，请单击“导入”。(方法请参照链接：[http://makecode-ide.readthedocs.io/](http://makecode-ide.readthedocs.io/)) 

![Img](./media/6.png)

如果要一一拖动代码块，请单击“**新建项目**”。

![Img](./media/7.png)

#### 3. 实验程序：

![Img](./media/47.png)

#### 4. 实验结果：

按照之前的方式将代码下载到Micro:bit主板，Micro USB数据线不要拔下来，利用Micro USB数据线上电。Micro:bit主板上的LED矩阵感知周围的光强，当光照强度大于100时，LED矩阵显示“太阳”标志；否则，LED矩阵上LED灯全部点亮

#### 5. 代码说明:

![Img](./media/108.png)

LED矩阵感知周围的光强，检测光照强度。

---

### 项目09 扬声器

![Img](./media/48.png)

#### 1. 实验说明：

Micro:bit主板有内置扬声器，这使得在你的项目中添加声音变得非常容易。通过编程使扬声器发出各种各样的音调，并且让扬声器播放出来。

#### 2. 准备： 

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）打开离线版本或Web版本的MakeCode。 

![Img](./media/5.png)

如果是选择通过导入 **.Hex** 文件来加载项目，请单击“导入”。(方法请参照链接：[http://makecode-ide.readthedocs.io/](http://makecode-ide.readthedocs.io/)) 

![Img](./media/6.png)

如果要一一拖动代码块，请单击“**新建项目**”。

![Img](./media/7.png)

#### 3. 实验程序：

![Img](./media/50.png)

#### 4. 实验现象: 

按照之前的方式将实验程序下载到Micro:bit主板，利用Micro USB数据线上电，Micro:bit主板上的扬声器播放各种声音且LED点阵显示音乐标志图案。

#### 5. 代码说明:

![Img](./media/109.png)

蜂鸣器发出各种内置的声音。

---

### 项目10 触摸感应logo

![Img](./media/51.png)

#### 1. 实验说明：

如果你有了Micro:bit主板，你可以在你的项目中使用金色的触摸感应logo作为另一个输入，这就像多了一个按钮。触摸感应采用的是电容式触摸传感器，当你手指按下（或触摸）它时，它就能感应到电场的微小变化---就像你的手机或平板电脑屏幕一样。当你触摸它，能控制Micro:bit板实现某个功能。

#### 2. 准备：

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）打开离线版本或Web版本的MakeCode。 

![Img](./media/5.png)

如果是选择通过导入 **.Hex** 文件来加载项目，请单击“导入”。(方法请参照链接：[http://makecode-ide.readthedocs.io/](http://makecode-ide.readthedocs.io/)) 

![Img](./media/6.png)

如果要一一拖动代码块，请单击“**新建项目**”。

![Img](./media/7.png)

#### 3. 实验代码：

![Img](./media/52.png)

#### 4. 实验现象：  

按照之前的方式将实验代码下载到Micro:bit板，利用Micro USB数据线上电，手指按住Micro:bit主板上“Logo”标志处，Micro:bit主板上的LED点阵显示“❤”图案；手指松开Micro:bit主板上“Logo”标志处，会出现数字。

#### 5. 代码说明:

![Img](./media/110.png)

被触摸或被按下或被松开或被长按microbit主板上的logo标志。

![Img](./media/111.png)

将运行时间赋给于变量start，单位为毫秒。

![Img](./media/112.png)

将running time－变量start的值赋给于变量time，LED点阵屏显示变量time除于1000的整数。

---

### 项目11 麦克风

![Img](./media/53.png)

![Img](./media/54.png)

#### 1. 实验说明：

Micro:bit主板有一个内置麦克风，可以测量环境的声音程度。你可以使用它作为一个简单的输入---当你鼓掌时，Micro:bit主板上前面内置麦克风LED指示灯会被打开。它还可以测量声音的强度，所以你可以制作一个噪音等级表或与音乐合拍的迪斯科灯光。麦克风是在Micro:bit 主板的背面，而在前面，你会发现一个内置麦克风LED指示灯，还有紧挨着让声音进入麦克风的孔。当你Micro:bit主板在测量声音级别时，它就会亮起来。

#### 2. 准备：

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）打开离线版本或Web版本的MakeCode。 

![Img](./media/5.png)

如果是选择通过导入 **.Hex** 文件来加载项目，请单击“导入”。(方法请参照链接：[http://makecode-ide.readthedocs.io/](http://makecode-ide.readthedocs.io/)) 

![Img](./media/6.png)

如果要一一拖动代码块，请单击“**新建项目**”。

![Img](./media/7.png)

#### 3. 实验程序：                                                                                  
![Img](./media/55.png)

#### 4. 实验结果：

按照之前的方式将实验程序下载到Micro:bit主板，利用Micro USB数据线上电。当你鼓掌时，Micro:bit 主板上的LED点阵显示显示了声音强度值，声音越大，LED点阵点亮的LED灯越多。

#### 5. 代码说明:

![Img](./media/113.png)

按键A被按下。

![Img](./media/114.png)

将声音级别值赋给于变量soundLevel。

---

### 项目12 Microbit 蓝牙无线通信

![Img](./media/56.png)

#### 1. 实验说明：

Micro:bit主板了处理器内置蓝牙5.1低功耗的BLE(蓝牙 Low Energy)设备）以及2.4GHz天线，可进行蓝牙无线通信和2.4GHz无线通信。使得Micro:bit主板可以与各种蓝牙设备进行通信，包括智能手机和平板电脑。

在本实验中，主要讲解新款的Micro:bit主板实现蓝牙无线通信功能，我们可以通过连接蓝牙，实现无线传输代码（信号）功能。我们利用一个苹果系统设备（手机/iPad）和Micro:bit 主板连接，实现无线传输功能。设置安卓系统手机实现无线传输方法和苹果系统设备（手机/iPad）类似，这里就不一一介绍了。

#### 2. 准备：

（1）通过Micro USB线连接Micro:bit主板和电脑。

![Img](./media/4.png)

（2）苹果系统设备（手机/iPad）或安卓系统手机。

#### 3. 实验步骤：

App下载链接：[https://microbit.org/get-started/user-guide/mobile/](https://microbit.org/get-started/user-guide/mobile/) （安卓系统下载参考链接，需要翻墙下载）

**我们以苹果系统设备为例：**

（1）如果你的智能手机/iPad是苹果系统的，需要先在电脑上进入网页：[https://www.microbit.org/get-started/user-guide/ble-ios/](https://www.microbit.org/get-started/user-guide/ble-ios/) ，往下翻点击“<span style="color: rgb(0, 209, 0);">**Download pairing HEX file**</span>”下载micro:bit的固件到创建的文件夹中或电脑桌面上，并将下载好的Micro:bit固件烧入Micro:bit主板中。（<span style="color: rgb(255, 76, 65);">这一步只针对于苹果系统的智能手机/iPad，安卓系统智能手机/不需要这一步</span>）

![Img](./media/57.png)

![Img](./media/58.png)

（2）在苹果系统设备（手机/iPad）上打开![Img](./media/59.png)，在App Store的搜索框中输入“micro bit”，然后选中micro:bit 选项，会出现下载界面（如下图所示：），点击“![Img](./media/60.png)”，就可以下载安装对应的APP。

![Img](./media/61.png)

（3）苹果系统设备（手机/iPad）和Micro:bit主板配对连接。

a.APP安装成功后，打开苹果系统设备（手机/iPad）上的蓝牙。

![Img](./media/62.png)

b.点击![Img](./media/63.png)打开APP，先确定Micro USB数据线已经将Micro:bit主板和电脑连接上，再点击APP的第一项“**Choose micro:bit**”，开始配对蓝牙。

![Img](./media/64.png)

c.点击“**Pair a new micro:bit**”，开始配对。

![Img](./media/65.png)

d.根据提示，首先同时按住micro:bit主板上的按键A和B，然后按下micro:bit主板后面的复位&电源按钮几秒钟（按键A和B不能松开），再松开复位&电源按钮，micro:bit主板上LED点阵会显示一个密码图案。最后松开micro:bit主板上的按键A和B，接着点击“**Next**”。

![Img](./media/66.png)

![Img](./media/67.png)

e.在苹果系统手机/iPad上设置密码图案，使图案和micro:bit主板上显示的密码图案一样，点击“**Next**”。

![Img](./media/68.png)

f.点击“**Next**”，出现对话框，在对话框中点击“**Pair**”。几秒钟后，配对成功，同时Micro:bit主板上的LED点阵显示“√”图案。

![Img](./media/69.png)

![Img](./media/70.png)

![Img](./media/71.png)

![Img](./media/72.png)

（4）蓝牙配对成功后，开始利用APP编写代码，并上传代码。

a.点击第二项“Create Code”，进入编程界面，开始编写代码程序。

![Img](./media/73.png)

![Img](./media/74.png)

![Img](./media/75.png)

![Img](./media/76.png)

b. 将代码程序项目名称设置为“1”，点击保存图案“![Img](./media/77.png)”，保存代码程序。

![Img](./media/78.png)

c.项目代码程序保存成功后，点击第三项“**Flash**”进入上传代码程序界面。默认选择代码程序是刚刚保存的项目名称为“**1**”的代码程序，然后点击“**Flash**”上传代码程序“**1**”。

![Img](./media/79.png)

![Img](./media/80.png)

![Img](./media/81.png)

d.几秒钟后，代码程序“**1**”上传成功，会显示如下图。然后micro:bit主板上的LED点阵显示跳跃的“**心**”对应图案。

![Img](./media/82.png)

---

### 项目13 Hello World

#### 1. 项目介绍：

对于Micro:bit初学者，我们将从一些简单的东西开始。在这个项目中，您只需要一个Micro:bit主板，Micro USB线和计算机来完成“Hello World!”项目。它不仅是Micro:bit主板和计算机的通信测试，也是Micro:bit世界的初级项目。

#### 2. 项目元件：

| ![Img](./media/0.png)| ![Img](./media/115.png) |
| :--: | :--: |
|Micro:bit主板*1 | MicroUSB线*1 |

#### 3. 项目接线：

![Img](./media/4.png)

#### 4. 项目代码：

![Img](./media/148.png)

#### 5. 项目现象：

按照接线图正确接好线，将代码上传至Micro:bit主板。上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：Micro:bit主板上的LED点阵滚动显示“Hello World!”。

![Img](./media/5.png)

---

### 项目14 点亮LED

#### 1. 项目介绍：

在这个项目中，我们将向你展示点亮LED。我们是使用Micro:bit主板的数字引脚来打开LED，使LED被点亮。

#### 2. 项目元件：

|![Img](./media/0.png)|![Img](./media/116.png)|![Img](./media/117.png)| ![Img](./media/177.png)|
| :--: | :--: | :--: | :--: |
|Micro:bit主板*1|面包板*1|红色LED*1|Micro:bit扩展板*1|
|![Img](./media/118.png)| ![Img](./media/119.png)|![Img](./media/115.png)| |
|220Ω电阻*1|面包板连接线*2|MicroUSB线*1| |

#### 3. 元件知识：

**（1）LED**

![Img](./media/117.png)

LED是一种被称为“发光二极管”的半导体，是一种由半导体材料(硅、硒、锗等)制成的电子器件。它有正极和负极。短腿为负极，接GND，长腿为正极，接3.3V或5V。

![Img](./media/120.png)

**（2）五色环电阻**

电阻是电路中限制或调节电流流动的电子元件。左边是电阻器的外观，右边是电阻在电路中表示的符号。电阻(R)的单位为欧姆(Ω)，1 mΩ= 1000 kΩ，1kΩ= 1000Ω。

![Img](./media/abcdefg.png)

我们可以使用电阻来保护敏感组件，如LED。电阻的强度（以Ω为单位）用小色环标记在电阻器的主体上。每种颜色代表一个数字，你可以用电阻对照卡查找。

![Img](./media/121.png)

在这个套件中，我们提供了2个具有不同电阻值的五色环电阻。这里以2个五色环电阻为例：

220Ω电阻×10

![Img](./media/122.png)

1KΩ电阻×10

![Img](./media/123.png)

在相同的电压下，会有更小的电流和更大的电阻。电流、电压、电阻之间的联系可以用公式表示：I=U/R。在下图中，目前通过R1的电流: I = U / R = 3 V / 10 KΩ= 0.0003A= 0.3mA。

![Img](./media/124.png)

不要把电阻值很低的电阻直接连接在电源两极，这样会使电流过高而损坏电子元件。电阻是没有正负极之分。

**（3）面包板**

面包板是实验室中用于搭接电路的重要工具。面包板上有许多孔，可以插入集成电路和电阻等电路元件。熟练掌握面包板的使用方法是提高实验效率，减少实验故障出现几率的重要基础之一。下面就面包板的结构和使用方法做简单介绍。一个典型的面包板如下所示：

![Img](./media/125.png)

面包板的外观和内部结构如上图所示，常见的最小单元面包板分上、中、下三部分，上面和下面部分一般是由一行或两行的插孔构成的窄条，中间部分是由中间一条隔离凹槽和上下各5行的插孔构成的条。

![Img](./media/126.png)

在面包板的两个窄条分别有两行插孔，两行之间是不连通的，一般是作为电源引入的通路。上方第一行标有“+”的一行有10组插孔（内部都是连通），均为正极；上方第二行标有“-”的一行有10组插孔，（内部都是连通），均为接地。面包板下方的第一行与第二行结构同上。如需用到整个面包板，通常将“+”与“+”用导线连接起来，“-”与“-”用导线连接起来。

中间部分宽条是由中间一条隔离凹槽和上下各5 行的插孔构成。在同一列中的5 个插孔是互相连通的，列和列之间以及凹槽上下部分则是不连通的。外观及结构如下图：

![Img](./media/127.png)

中间部分宽条的连接孔分为上下两部分，是面包板的主工作区，用来插接原件和面包板连接线。在同一列中的5个插孔（即a-b-c-d-e，f-g-h-i-j）是互相连通的；列和列之间以及凹槽上下部分是不连通的。在做实验的时候，通常是使用两窄一宽组成的小单元，在宽条部分搭接电路的主体部分，上面的窄条取一行做电源，下面的窄条取一行做接地。中间宽条用于连接电路，由于凹槽上下是不连通的，所以集成块一般跨插在凹槽上。

**(4)Micro:bit扩展板**

![Img](./media/177.png)

为了方便Micro:bit 开发板接线，特别设计了这款扩展板。扩展板自带AMS1117芯片，可以外接DC 4.75-12V 给Micro:bit扩展板供电。Micro:bit开发板全部引脚和电源均已引出到扩展板中间排母，我们可以直接在扩展板上焊接元件，也可以通过400孔面包板连接电路。面包板与扩展板之间通过双面胶连接，售出时面包板与扩展板是分离的。扩展区域使用双面PCB过孔连接，正反两面都可焊接元件背面IO有贴片焊盘，方面飞线连接；下面部分放置400孔面包板，方便实验扩展。

规格参数:

- 输入电压：DC 4.75-12V
- 排母间距：2.54mm


**(5)电源**

Micro:bit主板需要3.3V电源，在本项目中，我们通过用MicroUSB线将Micro:bit主板和电脑连起来。

![Img](./media/4.png)

#### 4. 项目接线图：

![Img](./media/159.png)

#### 5. 项目代码：

![Img](./media/149.png)

#### 6. 项目现象：

按照接线图正确接好各元器件，将代码上传至Micro:bit主板。上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：LED被点亮。

![Img](./media/128.png)

#### 7. 代码说明:

![Img](./media/144.png)  

向指定引脚设置“1”或“0”，选择“1”代表给该引脚设置高电平，有电压，有电流，则LED点亮；选择“0”代表给引脚设置低电平，没电压，没有电流，则LED不亮。 

---

### 项目15 LED闪烁

#### 1. 项目介绍：

在这个项目中，我们将向你展示LED闪烁效果。我们是使用Micro:bit主板的数字引脚来打开LED，让它闪烁。

#### 2. 项目元件：

|![Img](./media/0.png)|![Img](./media/116.png)|![Img](./media/117.png)| ![Img](./media/177.png)|
| :--: | :--: | :--: | :--: |
|Micro:bit主板*1|面包板*1|红色LED*1|Micro:bit扩展板*1|
|![Img](./media/118.png)| ![Img](./media/119.png)|![Img](./media/115.png)| |
|220Ω电阻*1|面包板连接线*2|MicroUSB线*1| |

#### 3. 项目接线图：

![Img](./media/159.png)

#### 4. 项目代码：

![Img](./media/150.png)

#### 5. 项目现象：

按照接线图正确接好各元器件，将代码上传至Micro:bit主板。上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：电路中的LED会反复闪烁。

![Img](./media/129.png)

#### 6. 代码说明:

![Img](./media/144.png) 

向指定引脚设置“1”或“0”，选择“1”代表给该引脚设置高电平，有电压，有电流，则LED点亮；选择“0”代表给引脚设置低电平，没电压，没有电流，则LED不亮。

![Img](./media/90.png)

延时，单位为毫秒。

---

### 项目16 交通灯

#### 1. 项目介绍：

交通灯在我们的日常生活中很普遍。根据一定的时间规律，交通灯是由红、黄、绿三种颜色组成的。每个人都应该遵守交通规则，这可以避免许多交通事故。在这个项目中，我们将使用Micro:bit主板和一些led(红，黄，绿)来模拟交通灯。

#### 2. 项目元件：

|![Img](./media/0.png)|![Img](./media/116.png)| ![Img](./media/177.png)|
| :--: | :--: | :--: |
|Micro:bit主板*1|面包板*1|Micro:bit扩展板*1|
|![Img](./media/117.png)|![Img](./media/130.png)|![Img](./media/131.png)|
|红色LED*1|黄色LED*1|绿色LED*1|
|![Img](./media/118.png)| ![Img](./media/119.png)|![Img](./media/115.png)|
|220Ω电阻*3|面包板连接线若干|MicroUSB线*1|

#### 3. 项目接线图： 

![Img](./media/160.png)

#### 4. 项目代码：

![Img](./media/151.png)

#### 5. 项目现象：

按照接线图正确接好各元器件，将代码上传至Micro:bit主板。上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：1.首先，绿灯会亮5秒，然后熄灭；2.其次，黄灯会闪烁3次，然后熄灭；3.然后，红灯会亮5秒，然后熄灭；4.继续运行上述1-3个步骤。

![Img](./media/AB7.jpg)

#### 6. 代码说明:

![Img](./media/167.png)

有条件的循环控制语句，当满足循环次数时就退出循环，比如：4表示循环执行4次，数字4是可以改成其他数字的。

---

### 项目17 呼吸灯

#### 1. 项目介绍：

在之前的研究中，我们知道LED有亮/灭状态，那么如何进入中间状态呢?如何输出一个中间状态让LED“半亮”?这就是我们将要学习的。呼吸灯，即LED由灭到亮，再由亮到灭，就像“呼吸”一样。那么，如何控制LED的亮度呢? 我们将使用Micro:bit主板的PWM来实现这个目标。

#### 2. 项目元件：

|![Img](./media/0.png)|![Img](./media/116.png)|![Img](./media/117.png)| ![Img](./media/177.png)|
| :--: | :--: | :--: | :--: |
|Micro:bit主板*1|面包板*1|红色LED*1|Micro:bit扩展板*1|
|![Img](./media/118.png)| ![Img](./media/119.png)|![Img](./media/115.png)| |
|220Ω电阻*1|面包板连接线*2|MicroUSB线*1| |

#### 3. 元件知识：

![Img](./media/132.png)

**模拟信号 & 数字信号** 

模拟信号在时间和数值上都是连续的信号。相反，数字信号或离散时间信号是由一系列数字组成的时间序列。生活中的大多数信号都是模拟信号，一个熟悉的模拟信号的例子是：全天的温度是连续不断变化的，而不是突然从0到10的瞬间变化。然而，数字信号的值可以瞬间改变。这个变化用数字表示为1和0(二进制代码的基础)。如下图所示，我们可以更容易地看出它们的差异。

![Img](./media/133.png)

在实际应用中，我们经常使用二进制作为数字信号，即一系列的0和1。由于二进制信号只有两个值(0或1)，因此具有很大的稳定性和可靠性。最后，可以将模拟信号和数字信号相互转换。

**PWM：**

脉宽调制(PWM)是一种利用数字信号控制模拟电路的有效方法。普通处理器不能直接输出模拟信号。PWM技术使这种转换(将数字信号转换为模拟信号)非常方便。PWM技术利用数字引脚发送一定频率的方波，即高电平和低电平的输出，交替持续一段时间。每一组高电平和低电平的总时间一般是固定的，称为周期(注:周期的倒数是频率)。高电平输出的时间通常称为脉宽，占空比是脉宽(PW)与波形总周期(T)之比的百分比。高电平输出持续时间越长，占空比越长，模拟信号中相应的电压也就越高。下图显示了对应于脉冲宽度0%-100%的模拟信号电压在0V-3.3V(高电平为3.3V)之间的变化情况.

![Img](./media/134.png)

PWM占空比越长，输出功率越高。既然我们了解了这种关系，我们就可以用PWM来控制LED的亮度或直流电机的速度等等。从上面可以看出，PWM并不是真实的模拟信号，电压的有效值等于相应的模拟信号。因此，我们可以控制LED和其他输出模块的输出功率，以达到不同的效果。

#### 4. 项目接线图： 

![Img](./media/159.png)

#### 5. 项目代码：

![Img](./media/152.png)

#### 6. 项目现象：

按照接线图正确接好各元器件，将代码上传至Micro:bit主板。上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：电路中的LED从暗逐渐变亮，再从亮逐渐变暗，就像呼吸一样。

![Img](./media/135.png)

#### 7. 代码说明:

![Img](./media/168.png) 

创建并设置变量“<span style="color: rgb(255, 76, 65);">brightness</span>”初始值为0。

![Img](./media/169.png) 

获取变量brightness。

![Img](./media/170.png)

设置变量brightness每次以10毫秒频率加1，然后设置P1的模拟值为brightness。 

![Img](./media/171.png)

当满足false里语句，则运行“执行”处命令。

![Img](./media/172.png)

设置变量brightness每次以10毫秒频率减1，然后设置P1的模拟值为brightness。 

---

### 项目18 流水灯

#### 1. 项目介绍：

在日常生活中，我们可以看到许多由不同颜色的led组成的广告牌。他们不断地改变灯光(像流水一样)来吸引顾客的注意。在这个项目中，我们将使用Micro:bit主板控制3个LED灯实现流水的效果。

#### 2. 项目元件：

|![Img](./media/0.png)|![Img](./media/116.png)|![Img](./media/117.png)| ![Img](./media/177.png)|
| :--: | :--: | :--: | :--: |
|Micro:bit主板*1|面包板*1|红色LED*3|Micro:bit扩展板*1|
|![Img](./media/118.png)| ![Img](./media/119.png)|![Img](./media/115.png)| |
|220Ω电阻*3|面包板连接线若干|MicroUSB线*1| |

#### 3. 项目接线图:

![Img](./media/161.png)

#### 4. 项目代码：

![Img](./media/153.png)

#### 5. 项目现象：

按照接线图正确接好各元器件，将代码上传至Micro:bit主板。上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：电路中的3个LED会逐渐亮起来，然后逐渐熄灭，就像电池充电一样。

![Img](./media/AB6.jpg)

#### 6. 代码说明:

可以参照项目03的代码说明，这里就不多做介绍了。

---

### 项目19 有源蜂鸣器

#### 1. 项目介绍：

有源蜂鸣器模块上有一个发声元件----有源蜂鸣器。它被广泛用作电脑、打印机、报警器、电子玩具、电话、计时器等的发声元件。它有一个内在的振动源，需连接3.3V~5V电源，即可持续发出嗡嗡声。在这个项目中，我们将使用Micro:bit主板控制有源蜂鸣器发出“滴滴”声。

#### 2. 项目元件：

|![Img](./media/0.png)|![Img](./media/177.png)|![Img](./media/136.png)|
| :--: | :--: | :--: |
|Micro:bit主板*1|Micro:bit扩展板*1|有源蜂鸣器模块*1|
|![Img](./media/137.jpg)|![Img](./media/115.png)|   |
|公对母杜邦线若干|MicroUSB线*1|  |

#### 3. 元件知识：

<span style="color: rgb(255, 76, 65);">注意：本教程使用的是有源蜂鸣器。</span>

![Img](./media/136.png)

有源蜂鸣器和无源蜂鸣器的“源”不是指电源，而是指震荡源。

**有源蜂鸣器**：内部自带震荡源，所以一触发就能发声，发声频率固定。有源蜂鸣器的优点是程序控制方便，声压高。有源自激型蜂鸣器工作发声原理如下：直流电源输入经过振荡系统的放大和取样电路在谐振装置作用下产生声音信号。

**模块参数：**

工作电压: DC 3.3 ~ 5V 

工作温度：-10°C ~ +50°C

控制信号：数字信号

尺寸：32 mm x 23.8 mm x 12.3 mm

定位孔大小：直径为 4.8 mm


**无源蜂鸣器**: 内部不带震荡源，如果直接通直流电信号无源蜂鸣器是没有声音的，因为磁路恒定，振动膜片一直处在吸附状态，不能振动发音。根据不同需求，一般我们通过方波去驱动，然后通过更换方波的频率来实现不同音效。

**总结：有源蜂鸣器内部带震荡源，发声频率固定。无源内部不带震荡源，通过方波去驱动，发音频率可改变。**

#### 4. 项目接线图：

![Img](./media/162.png)

#### 5. 项目代码：

![Img](./media/154.png)

#### 6. 项目现象：

按照接线图正确接好各元器件，将代码上传至Micro:bit主板。上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：有源蜂鸣器发出“滴滴”声。

![Img](./media/AB5.jpg)

#### 8. 代码说明:

可以参照项目03的代码说明，这里就不多做介绍了。

---

### 项目20 继电器控制LED

#### 1. 项目介绍：

在日常生活中，我们一般使用交流来驱动电气设备，有时我们会用开关来控制电器。如果将开关直接连接到交流电路上，一旦发生漏电，人就有危险。从安全的角度考虑，我们特别设计了这款具有NO(常开)端和NC(常闭)端的继电器模块。在这节课我们将学习一个比较特殊、好用的开关，就是继电器模块，使用继电器模块控制LED灯亮灭。

#### 2. 项目元件：

|![Img](./media/0.png)|![Img](./media/116.png)| ![Img](./media/177.png)|![Img](./media/138.png)|
| :--: | :--: | :--: | :--: |
|Micro:bit主板*1|面包板*1| Micro:bit扩展板*1|继电器模块*1|
|![Img](./media/115.png)|![Img](./media/118.png)| ![Img](./media/119.png)|![Img](./media/117.png)|
|MicroUSB线*1|220Ω电阻*1|面包板连接线若干|红色LED*1|
|![Img](./media/A25.png)|![Img](./media/137.jpg)|![Img](./media/178.png)|![Img](./media/182.png)|
|一字螺丝刀*1|公对母杜邦线若干|电源适配器*1|面包板专用电源模块*1|

#### 3. 元件知识：

![Img](./media/138.png)

**继电器：** 继电器能兼容多种单片机控制板，是用小电流去控制大电流运作的一种“自动开关”。它可以让单片机控制板驱动3A以下负载，如LED灯带、直流马达、微型水泵、电磁阀可插拔式接口设计，方便使用。继电器有3个接线柱用于外接电路，分别为NO、COM和NC端（背后丝印）。

![Img](./media/139.png)

**模块参数:**

工作电压: DC 5V 

工作电流: 50 mA

最大功率: 0.25 W

控制信号: 数字信号

触电电流: 小于 3 A

工作温度：-10°C ~ +50°C

尺寸：47.6mm x 23.8mm x 19mm

定位孔大小：直径为4.8mm

**模块原理图:**

![Img](./media/140.png)

一个继电器拥有一个动触点以及两个静触点A和B。

当开关K断开时，继电器线路无电流通过，此时动触点与静触点B相接触，上半部分的电路导通。静触点B被称为常闭触点（NC）。常闭——NC（normal close）通常情况下是关合状态，即线圈未得电的情况下闭合的。

当开关K闭合时，继电器电路通过电流产生磁力，此时动触点与静触点A相接触，下半部分电路导通。静触点A被称为常开触点（NO）。常开——NO（normal open）通常情况下是断开状态，即线圈未得电的情况下断开的。

而动触点也被称为公共触点（COM）。

继电器简单来说就是一个开关，VCC表示电源正极、GND表示电源负极、IN表示信号输入脚，COM表示公共端，NC（normal close）表示常闭端，NO(normal open)表示常开端。

![Img](./media/141.png)

**面包板专用电源模块**

![Img](./media/182.png)

**说明：**

这个是面包板专用电源模块，它兼容5V和3.3V， 适用于MB102面包板 。模块包含左右两路独立控制，一路通过USB供电 ，输出电压恒定为DC 5V；另一路供电DC 7-12V，输出电压由拨码开关控制，分别为DC 5V 和DC 3.3V。

如果在另一路供电DC 7-12V，当拨码开关拨到 +5V 端，模块左右两路输出电压都为DC 5V；当拨码开关拨到+3V端，模块的USB供电端输出电压为DC 5V，另一路供电DC 7-12V端输出电压为DC 3.3V。

**规格：**

适用：MB102面包板 

输入电压：DC7-12V或USB供电 

输出电压：3.3V、5V可切换 

最大输出电流：<700mA

左右两路独立控制，其中一路可切换为3.3V、5V 

板载两组直流输出插针，方便外部引出使用

#### 4. 外接电源供电：

<span style="color: rgb(255, 76, 65);"> **特别注意：** </span> 使用家庭用电。

![Img](./media/179.png)

#### 5. 项目接线图：

<br>
<span style="color: rgb(61, 167, 66);"> **特别注意：** 接线前，需要用一字螺丝刀将继电器模块的NO端口和COM端口处的螺丝扭松，将面包板连接线的一端插入NO端口和COM端口处；接好线后，再用一字螺丝刀将NO端口和COM端口处的螺丝扭紧。</span>
<br>

![Img](./media/163.png)

#### 6. 项目代码：

![Img](./media/155.png)

#### 7. 项目现象：

按照接线图正确接好各元器件，将代码上传至Micro:bit主板。上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：继电器将循环开与关，开启1秒LED点亮1秒，关闭1秒LED熄灭1秒。同时可以听到继电器开与关的声音，还可以看到继电器上的指示灯指示状态的变化。

![Img](./media/AB4.jpg)

#### 8. 代码说明:

可以参照项目03的代码说明，这里就不多做介绍了。

---

### 项目21 人体红外热释传感器

#### 1. 项目介绍：

在本项目中，通过读取人体红外热释传感器模块上S端高低电平，判断附近是否有人在运动；并且在Micro:bit主板上的LED点阵屏显示测试结果。

#### 2. 项目元件：

|![Img](./media/0.png)|![Img](./media/177.png)|![Img](./media/142.png)|
| :--: | :--: | :--: |
|Micro:bit主板*1|Micro:bit扩展板*1|人体红外热释传感器*1|
|![Img](./media/137.jpg)|![Img](./media/115.png)|  |
|公对母杜邦线若干|MicroUSB线*1|  |

#### 3. 元件知识：

![Img](./media/142.png)

**人体红外热释传感器:** 它主要由一个RE200B-P传感器元件组成。它是一款基于热释电效应的人体热释运动传感器，能检测到人体或动物身上发出的红外线，配合菲涅尔透镜能使传感器探测范围更远更广。

**模块参数:**

工作电压: DC 3.3V ~ 5V 

工作电流: 3.6MA

最大功率: 0.018W

输出信号: 数字信号

触发方式: L 不可重复触发/H 重复触发

探测距离: ≤5m

视野角度: Y = 90°，X = 110°（视野角度为理论数值）

工作温度：-10°C ~ +50°C

尺寸：32mm x 23.8mm x 7.4mm

定位孔大小：直径为4.8mm


**模块原理图:**

![](media/143.jpg)

这个模块的原理图可能较前面的模块稍复杂，我们一部分一部分来看。先看电压转换部分，作用是将5V输入电压转换为3.3V输入电压。因为我们模块上用到的热释电红外传感器的工作电压是3.3V，不能直接用5V电压供电使用。有了这个电压转换部分，3.3V输入电压和5V输入电压都适用于此热释电红外传感器。

当红外热释传感器没有检测到红外信号时，红外热释传感器的1脚输出低电平，此时模块上的LED两端有电压差，有电流流过，LED被点亮，MOS管Q1导通（Q1是NPN MOS管，型号为2N7002。由于红外热释传感器的1脚输出低电平，所以Q1的源极Vs=0，而Q1的栅极Vg=3.3V，于是Q1的栅极G和Q1的源极S之间的电压 Vgs = 3.3V 大于Q1的阈值电压 2.5V，Q1导通。），信号端S检测到低电平。

当红外热释传感器检测到红外信号时，红外热释传感器的1脚输出高电平，此时模块上的LED熄灭，MOS管Q1不导通，则信号端S检测到被10K上拉电阻R5拉高的高电平。

#### 4. 项目接线图：

![Img](./media/164.png)

#### 5. 项目代码：

![Img](./media/156.png)

#### 6. 项目现象：

按照接线图正确接好各元器件，将代码上传至Micro:bit主板。上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：当传感器检测到附近有人在运动时，Micro:bit主板上的LED点阵屏显示1；没有检测到附近有人在运动时，Micro:bit主板上的LED点阵屏显示0。

![Img](./media/AB3.JPG)

#### 7. 代码说明:

![Img](./media/173.png)

人体红外热释传感器读取数字电平信号输出，并在Microbit主板上的LED点阵显示电平信号。

---

### 项目22 人体红外热释传感器控制LED

#### 1. 项目介绍：

上一项目中我们已经学习了人体红外热释传感器的工作原理，这一项目中我们将人体红外热释传感器和LED灯组合实验，实现人体红外热释传感器检测到附近有人经过时LED快速闪烁的效果。

#### 2. 项目元件：

|![Img](./media/0.png)|![Img](./media/116.png)| ![Img](./media/177.png)|
| :--: | :--: | :--: | 
|Micro:bit主板*1|面包板*1|Micro:bit扩展板*1|
|![Img](./media/142.png)|![Img](./media/115.png)|![Img](./media/118.png)  |
|人体红外热释传感器模块*1|MicroUSB线*1|220Ω电阻*1|
|![Img](./media/137.jpg)| ![Img](./media/119.png)|![Img](./media/117.png)|
|公对母杜邦线若干|面包板连接线若干|红色LED*1|  


#### 3. 项目接线图：

![Img](./media/165.png)

#### 4. 项目代码：

![Img](./media/157.png)

#### 5. 项目现象：

按照接线图正确接好各元器件，将代码上传至Micro:bit主板。上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：当人体红外热释传感器检测到附近有人经过时，人体红外热释传感器上的红灯灭，Micro:bit主板上的LED点阵显示“❤”图案，LED灯快速闪烁；否则，人体红外热释传感器模块上的红灯亮，Micro:bit主板上的LED点阵显示“![Img](./media/145.png)”图案，LED熄灭。

![Img](./media/AB2.jpg)

#### 6. 代码说明:

![Img](./media/175.png)

设置引脚P2的输出电压为高\低电平，1为高电平，点亮LED；0为低电平，熄灭LED。 

![Img](./media/174.png)

如果ture里的表达式为真，则执行“则”下面的代码，如果ture里的表达式为假，则执行“否则”下面的代码。 

![Img](./media/176.png)

运动检测，检测到有人经过。

![Img](./media/85.png)

在Microbit主板上的LED点阵上绘制特定图案。

---

### 项目23 人体感应报警系统

#### 1. 项目介绍：

前面的项目中我们已经学习了人体红外热释传感器的工作原理和人体红外热释传感器LED灯快速闪烁的效果。那么，在本项目中，我们将结合人体红外热释传感器、有源蜂鸣器和LED灯来模拟人体感应报警系统。

#### 2. 项目元件：

|![Img](./media/0.png)|![Img](./media/116.png)|![Img](./media/142.png)|![Img](./media/136.png)|
| :--: | :--: | :--: |:--: |
|Micro:bit主板*1|面包板*1|人体红外热释传感器模块*1|有源蜂鸣器模块*1|
|![Img](./media/137.jpg)|![Img](./media/115.png)|![Img](./media/177.png)| ![Img](./media/119.png)|
|公对母杜邦线若干|Micro USB线*1|Micro:bit扩展板*1|面包板连接线若干|
|![Img](./media/117.png)|![Img](./media/118.png) |   |    |
|红色LED*1|  220Ω电阻*1 |   |  | 

#### 3. 项目接线图：

![Img](./media/166.png)

#### 4. 项目代码：

![Img](./media/158.png)

#### 5. 项目现象：

按照接线图正确接好各元器件，将代码上传至Micro:bit主板。上传成功后，利用MicroUSB线连接到计算机上电，可以看到的现象是：当人体红外热释传感器检测到附近有人经过时，人体红外热释传感器模块上的红灯灭，Micro:bit主板上的LED点阵显示“![Img](./media/146.png)”图案，有源蜂鸣器发出警报，LED灯快速闪烁。否则，人体红外热释传感器模块上的红灯亮，Micro:bit主板上的LED点阵显示“![Img](./media/147.png)”图案，有源蜂鸣器不发声，LED灯熄灭。

![Img](./media/AB1.jpg)

#### 6. 代码说明:

可以参照项目10的代码说明，这里就不多做介绍了。

---


























