## 项目07 流水灯

**1. 项目介绍：**

在日常生活中，我们可以看到许多由不同颜色的led组成的广告牌。他们不断地改变灯光(像流水一样)来吸引顾客的注意。

在这个项目中，我们将使用ESP32控制10个leds实现流水的效果。

**2. 项目元件：**

|![Img](./media/afc52f6616725ba37e3b12a2e01685ad.png)|![Img](./media/a2aa343488c11843f13ae0413547c673.png)|![Img](./media/325f351a1cc5c9af86988ddafd03fa19.png)|
| :--: | :--: | :--: |
|ESP32*1|面包板*1|红色LED*10|
|![Img](./media/a487df5effb3b0ae28e7601cad88c97b.png)| ![Img](./media/8d920d12138bd3b4e62f02cecc2c63a3.png)|![Img](./media/b4421594adeb4676d63581a1047c6935.png)|
|220Ω电阻*10|跳线若干|USB 线*1|

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

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

**4. 项目代码：**

本项目是设计制作一个流水灯。这是这些行动：首先打开LED 1，然后关闭它。然后打开LED 2，然后关闭…并对所有10个LED重复同样的操作，直到最后一个LED关闭。这一过程反复进行，以实现流水的“运动”。

```C
//**********************************************************************
/* 
 * 文件名 : 流水灯
 * 描述 : 用十个led来演示流动灯
*/
byte ledPins[] = {22, 21, 19, 18, 17, 16, 4, 0, 2, 15};
int ledCounts;

void setup() {
  ledCounts = sizeof(ledPins);
  for (int i = 0; i < ledCounts; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  for (int i = 0; i < ledCounts; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(100);
    digitalWrite(ledPins[i], LOW);
  }
  for (int i = ledCounts - 1; i > -1; i--) {
    digitalWrite(ledPins[i], HIGH);
    delay(100);
    digitalWrite(ledPins[i], LOW);
  }
}
//**********************************************************************

```
ESP32主板通过USB线连接到计算机后开始上传代码。为了避免将代码上传至ESP32主板时出现错误，必须选择与计算机连接正确的控制板和端口（COM）。

点击 “**工具**” → “**开发板**”，可以查看到各种不同型号ESP32开发板，选择对应的ESP32开发板型号。

点击 “**工具**” → “**端口**”，选择对应的端口（COM）。

**注意：将ESP32主板通过USB线连接到计算机后才能看到对应的端口（COM）**。

单击 ![Img](./media/86b9e2ff982873d7304e9ba692e7f0da.png) 将代码上传到ESP32主控板。

<span style="color: rgb(255, 76, 65);">注意：</span> 如果上传代码不成功，可以再次点击 ![Img](./media/86b9e2ff982873d7304e9ba692e7f0da.png) 后用手按住ESP32主板上的Boot键 ![Img](./media/a3ce49fbd6f40f09869aa7e1d9f902f8.png)，出现上传进度百分比数后再松开Boot键，如下图所示：

![Img](./media/0fdadbed575d5f54ae1ca9405c3647cb.png)

**5. 项目现象：**

代码上传成功后，利用USB线上电后，你会看到的现象是：10个LED将从左到右点亮，然后从右到左返回。

![Img](./media/7546b1e47be75d184578949aba70ee0a.png)





