# 任务1——简易呼吸灯

## 1、任务目标

在程序的控制下，灯的亮度首先逐渐变亮，达到最亮后，逐渐变暗，完全熄灭后，再次逐渐点亮，依次循环。

## 2、流程图

![图3.5-1](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9n6Ww0HRSq8DyqFf_%2Fimage246.jpg?generation=1545295665027832\&alt=media)

## 3、程序编程

![图3.5-2](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9n6WyHwYJbb3ZDM6o%2Fimage248.jpg?generation=1545295664831957\&alt=media)

不难看出，上面这个函数的功能是让 LED 灯逐渐变亮。 要实现任务要求，还需要一个让 LED 逐渐变暗的函数。 完整的程序如下图：

![图3.5-3](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9n6X--1zaqqGj9Eyn%2Fimage250.jpg?generation=1545295664813177\&alt=media)

这段程序中我们接触到了两个新的模块——**函数以及模拟输出。**

左侧两个紫色块内的程序需要自行编写，它们的功能是定义两个函数。程序的主体是右侧的两个模块，它们是对左侧的函数的调用。

## 4、硬件连接

硬件连接：LED ——10。注意插线时的颜色对应。

![图3.5-4](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9n6X11A6U_OOXf544%2Fimage252.jpg?generation=1545295665272509\&alt=media)

## 5、Q\&A

Q：灯逐渐点亮后，并没有逐渐熄灭？

A：检查fadeOff函数的步长为-5，而不是5。

## 6、拓展

1、知识点总结

1）函数：我们最初见到函数是在数学当中。y=f(x)是函数的一种一般形式，它接受变量 x 的值，经过对应法则 f 的处理，向人返回结果值 y。Mixly 程序中的函数，可以类比理解。程序中的 fadeOn 函数接受了变量 time 的值，对其进行了操作，并向程序的其余部分返回一个值。

有区别的是，这里的变量 time，我们称之为“参数”，函数返回的值，是“空值”，因为这个函数的目的，不在于返回一个数值，而在于对于硬件进行输出操作。另外，函数的内部，也可以定义变量（如图3.5-3中的 value），这个变量只在函数执行的时候存在，一旦函数执行结束，value 也就不存在了。函数的一次执行叫做函数的调用，在一个函数中，可以调用其他函数，甚至可以调用自己。

2）模拟输出：脉宽调制（PWM：Pulse Width Modulation）输出：它是一种对模拟信号电平进行数字编码的方法，简单来说就是通过一个时钟周期内高低电平的不同占空比来表征模拟信号，如图3.5-6所示就是一个具体的编码样例。

Arduino 使用 analogWrite(int value)输出 PWM 信号，其中的value 取值范围是 0-255，效果如图3.5-5所示。Arduino 主控板只有有限个GPIO 管脚支持 PWM。观察一下 Arduino 板，查看数字引脚，你会发现其中 6 个引脚（3、5、6、9、10、11）旁标有“\~”，这些引脚不同于其他引脚，因为它们可以输出 PWM 信号。

![图3.5-5](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9n6X3fu42-2Mbqvlh%2Fimage254.jpg?generation=1545295665600971\&alt=media)

![图3.5-6](https://2259527808-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSXCnLP-UwKYzUqiVCQ%2F-LU9mtZFe4rG7WymDnYv%2F-LU9n6X51I60RqnXpkhi%2Fimage255.jpg?generation=1545295665334944\&alt=media)
