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