实验器材
5MM LED红色灯珠一颗
150欧碳膜电阻一颗
面包板一块
公对母杜邦线两根
ESP32开发板一块
TypeC USB数据线一根
LED介绍
LED是英文 "Light Emitting Diode" 的缩写,中文翻译为发光二极管。它是一种能够将电能转化为光能的电子元件。LED是一种半导体器件,在通电时会发出可见光。和传统的白炽灯泡或荧光灯相比,LED具有诸多优点:高效能、长寿命、耐震动、快速开启、低功耗等。因此,LED广泛应用于照明、显示、指示和装饰等领域。

如上图所示,LED的长脚为正极,短脚为负极,LED具有单向导电性,是有当电流从正极流入,从负极流出时,LED才能被正常点亮,如果方向反了,LED无法点亮,所以在实操中一定要记住这一点。
LED电气参数
LED根据颜色的不同,其供电电压和电流略有区别,但是总体上区别不是很大:
普通红色LED:典型的供电电压在1.8V至2.2V之间,典型的供电电流在5mA至20mA之间。
普通绿色LED:典型的供电电压在2.0V至3.6V之间,典型的供电电流在5mA至20mA之间。
普通蓝色LED:典型的供电电压在2.8V至4.0V之间,典型的供电电流在5mA至20mA之间。
本项目中,我们使用的是红色的LED,我们就取供电电压为2V,电流为10mA(电流越大,亮度越大),则根据欧姆定律可知,LED的内阻为:

电路搭建
根据上面对LED的理解,我们可以得到这样一个电路搭建的思路:
将LED的正极接到ESP32的某一个GPIO引脚(比如23号引脚),负极接到ESP32的任意GND引脚,当需要LED点亮的时候,给23号引脚输出高电平,当需要关闭LED时,输出低电平,这样就能通过程序灵活控制LED的点亮与熄灭了。
然而,这里还需要考虑LED可承受电压与引脚电压是否匹配
我们之前说过GPIO输出高电平时,引脚电压大于2.5V(虽然上一节实际测量得到的电压值为3V,但是这里取可能的最大值3.3V),但是红色LED的工作电压为1.8V~2.2V,如果将引脚3V3的电压压到LED上,LED会被烧毁,就算不会立即烧毁,工作寿命也会大大降低。所以这里我们需要对引脚电压进行降压,再将降压后的电压供给LED。
我们都知道电阻具有降压限流的作用,所以这里我们引入一个电阻进行降压,电路原理图如下:

上图中的R1即为限流降压电阻,但是限流电阻阻值应该取多大,下面是计算逻辑:
已知:流经R1和LED1的电流为10mA,LED的内阻为100Ω,LED两端的电压为2V,IO23的电压为3.3V,则根据分压要求,R1两端至少要分压3.3V-2V=1.3V的电压,才能保证不损坏LED。
根据欧姆定律可知:

通过公式计算得到的限流降压电阻的阻值为130Ω,但是为了方便,我们取一个比较常见的阻值:150Ω,电阻大一些小一些其实影响不大,无非就是LED灯亮度有一点点细微变化。
程序控制LED闪烁
有了上面的电路,我们就可以编写程序轻松控制LED灯闪缩了,代码如下:
#include <Arduino.h>
void setup() {
pinMode(23, OUTPUT);
}
void loop() {
digitalWrite(23, HIGH);
delay(1500);
digitalWrite(23, LOW);
delay(1500);
}第四行,将23号引脚设置为输出模式,以便后续往引脚输出高低电平来控制LED亮灭
第八行,往23号引脚输出高电平,LED点亮,随后延迟半秒钟
第十行,往23号引脚输出低电平,LED熄灭,随后延迟半秒钟
上述逻辑循环执行,就能实现LED灯不断闪缩的效果