
## 项目06 RGB LED

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

**1. 项目介绍：**

RGB led由三种颜色(红、绿、蓝)组成，通过混合这三种基本颜色可以发出不同的颜色。

在这个项目中，我们将向你介绍RGB LED，并向你展示如何使用ESP32控制RGB LED发出不同的颜色光。即使RGB LED是非常基本的，但这也是一个介绍自己或他人电子和编码基础的伟大方式。

**2. 项目元件：**

|![Img](./media/afc52f6616725ba37e3b12a2e01685ad.png)|![Img](./media/a2aa343488c11843f13ae0413547c673.png)|![Img](./media/6de88c5b9c38d8ab879ae91eb51431b7.png)|
| :--: | :--: | :--: |
|ESP32*1|面包板*1|RGB LED*1|
|![Img](./media/a487df5effb3b0ae28e7601cad88c97b.png)| ![Img](./media/8d920d12138bd3b4e62f02cecc2c63a3.png)|![Img](./media/b4421594adeb4676d63581a1047c6935.png)|
|220Ω电阻*3|跳线若干|USB 线*1|

**3. 元件知识：**

显示器大多遵循RGB颜色标准，电脑屏幕上的所有颜色都是由红、绿、蓝三种颜色以不同比例混合而成。 

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

这个RGB LED有4个引脚，每个颜色(红，绿，蓝)和一个共同的阴极。为了改变RGB led的亮度，我们可以使用ESP的PWM引脚。PWM引脚会给RGB led不同占空比的信号以获得不同的颜色。

如果我们使用3个10位PWM来控制RGBLED，理论上我们可以通过不同的组合创建2^10 ×2^10 ×2^10= 1,073,741,824(10亿)种颜色。

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

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

**5. 代码说明：**

![Img](./media/img-20241101084925.png)

设置共阴RGB亮不同颜色光，R、G、B可以在 0 ~ 255 之间设置任何数字。

**6. 项目代码：**

你可以打开我们提供的代码，也可以自己编写代码，其如下：

1. 从 “![Img](./media/img-20241023140031.png)” 拖出 “![Img](./media/img-20241023140106.png)”。

2. 从 “![Img](./media/img-20241024131848.png)” 拖出 “ ![Img](./media/img-20241101090120.png) ” 放入 “![Img](./media/img-20241023140106.png)”，R 管脚 为 0 、G 管脚 为 2 、B 管脚 为 15 ，R 、G、B 的值都赋值为 0 。

![Img](./media/img-20241101091350.png)

3. 从 “![Img](./media/img-20241023140031.png)” 拖出 “ ![Img](./media/img-20241029165415.png) ” ，从 1 到 10 步长为 1 改成从 0 到 255 步长为 1。

4. 复制代码块 “ ![Img](./media/img-20241113162347.png) ” 1 次放入 “ ![Img](./media/img-20241029174446.png) ” ，又从 “ ![Img](./media/img-20241024133608.png)” 拖出 “![Img](./media/img-20241024133651.png) ” 放入 R（0 ~ 255）后面 0 处；再从 “ ![Img](./media/img-20241024143857.png) ” 拖出 “ ![Img](./media/img-20241029174654.png) 放入 G（0 ~ 255）后面 0 处，将 “ + ” 改成 “ - ” ，把“ - ”前面的 1 改成 128，“ - ”后面的 1 替换成变量 i ；再复制代码块 “ ![Img](./media/img-20241029174845.png) ” 放入 G（0~255）后面 0 处，将 128 改成 255 ；再延时 10 毫秒。

![Img](./media/img-20241029175036.png)

5. 复制代码块 “ ![Img](./media/img-20241029175119.png) ” 1 次，将 从 0 到 255 步长为 1 改成 从 255 到 0 步长为 -1 。

![Img](./media/img-20241101092739.png)

完整代码：

![Img](./media/img-20241029175442.png)

**7. 项目现象：**

代码上传成功后，利用USB线上电后，你会看到的现象是：RGB LED开始显示随机颜色。

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




