3.点灯
3.1 LED 灯结构组成
LED 灯(发光二极管)是一种半导体光源,主要结构包括以下部分:
- 外壳:通常由塑料或玻璃制成,用于保护内部元件。
- 发光材料: LED 最核心的部分,由特殊半导体材料制成,例如:常见的 InGaN(氮化铟镓) 或 AlInGaP(铝铟镓磷)。
- 芯片:用于产生光的发光二极管芯片。
- 引线:提供电连接的金属引线。
- 焊点:将 LED 芯片与引线连接在一起的焊接点。
- 电极:负责连接半导体材料与外部电路,通常由金属制成。
- 反射腔:用于增强发光效果的一个结构,将发出的光反射到正面。
![](/assets/img/esp32/esp32s3pico/45.png)
3.2 LED灯发光原理
LED(发光二极管)发光原理基于半导体特性。在半导体中,存在着两类载流子:电子( n 型半导体)和空穴( p型半导体)。当 n型与 p型半导体材料接触时,会在交界处形成一个层结。 当施加适当的电压时,层结中空穴和电子可重组并释放能量。这个能量以光子的形式释放出 来,产生光。
3.3 LED灯驱动原理
LED 驱动指的是通过稳定的电源为 LED 提供合适的电流和电压,使其正常工作点亮。 LED 驱动方式主要有恒流和恒压两种。限定电流的恒流驱动是最常见的方式,因为 LED 灯对电流敏 感,电流大于其额定值可能导致损坏。恒流驱动保证了稳定的电流,从而确保了 LED 安全。
LED 灯的驱动比较简单,只需要给将对应的正负极接到单片机的正负极即可驱动。 LED的 接法也分有两种,灌入电流和输出电流。
LED接法示例
- 灌入电流指的是 LED的供电电流是由外部提供电流,将电流灌入我们的 MCU;风险是当外部 电源出现变化时,会导致 MCU的引脚烧坏。
- 输出电流指的是由 MCU提供电压电流,将电流输出给 LED;如果使用 MCU的 GPIO 直接驱动 LED,则驱动能力较弱,可能无法提供足够的电流驱动 LED。
需要注意的 是 LED 灯的颜色不同,对应的电压也不同。 电流不可过大,通常需要接入220 欧姆到 10K欧姆左右的限流电阻** ,限流电阻的阻值越大, LED的亮度越暗。
3.4 LED灯原理图
在开发板的原理图中,使用的是灌入电流接法,将 LED的正极接入电源 3.3V,负极接入限 流电阻再到 GPIO48。通过 LED灯的驱动原理可以知道,我们只要控制开发板的 GPIO48引脚输 出低电平,即可点亮 LED;
开发板 LED部分原理图
3.5 LED灯驱动流程
在 arduino中,可以通过调用 pinMode(pin, mode) ; 函数设置 GPIO48引脚为输出模式,再 通过 digitalWrite(pin, value) ; 函数设置 GPIO48引脚输出高电平或者低电平即可;
- 设置引脚模式
pinMode() 是 Arduino 编程语言中的一个函数,用于设置指定引脚的工作模式。它的语法如下:
1 pinMode(pin, mode);
其中, pin 是要设置的引脚号 ; mode 是要设置的工作模式,可以是以下之一:
- INPUT : 将指定引脚设置为输入模式,用于接收外部信号或传感器数据。在此模式下,引脚 会读取外部信号的电平。需要注意的是,在此模式下,引脚可能会处于悬空状态,导致不稳 定的读数。为解决此问题,可以使用外部上拉或下拉电阻或者改为使用内置的上拉电阻(见 下文)。
- INPUT_PULLUP :将引脚设置为内置上拉输入模式。在此模式下,引脚连接到一个内部的上拉 电阻,它会将悬空引脚保持在高电平状态。当外部电平为低电平时,读数会切换到 LOW 。
- OUTPUT : 将指定引脚设置为输出模式,用于发送电信号或控制外部设备。在此模式下,引脚 可以输出高电平( HIGH )或低电平( LOW )。可用于驱动 LED、继电器等外部设备。
- INPUT_PULLDOWN :将引脚设置为内置下拉输入模式,在此模式下, Arduino会在输入端接入 一个将引脚连接到地的电阻,以确保输入端始终处于低电平状态。当外部电路未连接或者处 于高阻状态时, Arduino输入引脚会仍然保持在低电平状态。 使用 pinMode 函数的示例 代码如下:
1 // 设置引脚 6 为输出模式
1 pinMode(6, OUTPUT);
1 // 设置引脚 2 为输入模式
1 pinMode(2, INPUT);
在以上示例中,第一个代码行将引脚 GPIO6 设置为输出模式,可以将其用作控制外部设 备的引脚。第二个代码行将引脚 GPIO2 设置为输入模式,可以将其用作接收外部传感器的信 号的引脚。![ref3]
- 设置引脚输出
digitalWrite() 是 Arduino 编程语言中用于设置数字引脚电平的函数。它用来将数字引脚设 置为 HIGH 或 LOW。当引脚设置为 OUTPUT 模式时,使用该函数可以改变引脚电平从而影响 连接到该引脚的组件。
函数的语法为:
c![ref4]
1 digitalWrite(pin, value);
这里 :
- pin : 是你想要写入的数字引脚编号;
- value : 是你要设置的电平,可以是 HIGH 或 LOW 。其中 HIGH 表示高电平, LOW 表示低
电平。
例如 :
1 pinMode(13, OUTPUT); // 设置 13 引脚为输出模式
1 digitalWrite(13, HIGH); // 将数字 13 引脚输出设置为 HIGH(高电平)
在以上的示例中,第一行代码设置了 13 号引脚( GPIO13)为输出模式,然后第二行代码就可 以将 13 号引脚的电平设置为 HIGH,这样在 13 号引脚上就会有 3.3V 的电压输出。
要注意的是,如果没有首先使用 pinMode() 函数将引脚设置为 OUTPUT,调用
digitalWrite() 函数可能不会产生任何效果。 ❓数字引脚是什么?
数字引脚是微控制器(不限于 Arduino)或其他电子设备中的一种输入 /输出( I/O)引脚。顾名思义, 数字引脚处理的是二进制的,离散的电平,通常分为 HIGH(高电平,如 5V 或 3.3V)和 LOW(低电 平,如 0V 或接地)。这些引脚的主要目的是与其他数字设备或组件进行通信、控制或检测。![ref2]
- 点灯验证
将开发板连接 LED的 GPIO48引脚设置为输出模式,并设置为输出低电平,点亮 LED。 编写如下代码:
1 //只执行 1次
1 void setup()
1 {
1 // 设置 GPIO48 引脚 为输出模式
1 pinMode(48,OUTPUT);
1 // 设置 48引脚 输出低电平(点亮 LED)
1 digitalWrite(48,LOW);
1 }
1 //循环执行
1 void loop()
11 { 12
13 }
点击上传键,将代码上传(烧入)到开发板。
上传代码 当出现 Hard resetting via RTS pin... 说明下载完成。
下载成功提示
- 点灯效果
开发板上的标记着 G48的 LED灯,下载代码后将会常亮。
点灯效果