环境准备
- arduino 开发环境下载:https://www.arduino.cc/en/software/
- esp32包下载:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
实验视频:https://www.bilibili.com/video/BV18BcweUEpT
一些概念
GPIO 引脚
GPIO 引脚引脚又叫管脚,英文叫 Pin, 就是从集成电路(芯片以及一些电子元件)内部电路引出与外围电路的接线的接口。在我们的 ESP32 开发板上, 我们可以把这些称为引脚, 这些引脚其实是从 ESP32 芯片内部引出来的, 我们可以看到每个引脚都标了自己独特的名字。
其中有一类引脚叫 GPIO 引脚, 负责输入/输出电压。开发板上 D 开头的引脚都是这种引脚, 比如 D2、D4、D15 等等
什么是电平?
电路上某点的电压(对公共参考点)或电位是高还是低。比如在逻辑电路中,高于某个数值的电位称其为高电位,或高电平,低于某个数值的,为低电位或低电平。比如 ESP32 中,高电平的数值大于2.5V,低电平的数值小于0.5V,具体的数值最好通过测试研究来确定。
LED
LED(light-emitting diode) 即发光二极管。它具有单向导电性,通过 5mA 左右电流即可发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管,一般我们控制在 3mA-20mA 之间,通常我们会在 LED 管脚上串联一个电阻,目的就是为了限制通过发光二极管的电流不要太大,因此这些电阻又可以称为限流电阻。当发光二极管发光时,测量它两端电压约为 1.7V,这个电压又叫做发光二极管的导通压降。发光二极管正极又称阳极,负极又称阴极,电流只能从阳极流向阴极。直插式发光二极管长脚为阳极,短脚为阴极。
电路设计
物料清单(BOM 表):
- 直插式 LED:5
- 1kΩ 电阻:5
- 杜邦线(跳线):若干
- 面包板:1
一定要接电阻,不然会由于电流过大,烧坏 LED。
代码
点亮 LED
//定义led引脚
int led_pin = 12;
void setup() {
// 设定引脚为输出模式
pinMode(led_pin, OUTPUT);
// 点亮 led
digitalWrite(led_pin, HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
}
选择COM3
,开发板选择ESP32 Dev Module
点击上传,记得按开发板的BOOT
按键
上传后按下复位按键,点亮成功。
LED 其它玩法
LED 闪烁
//定义led引脚
int led_pin = 12;
void setup() {
// 设定引脚为输出模式
pinMode(led_pin, OUTPUT);
}
void loop() {
// 点亮 led
digitalWrite(led_pin, HIGH);
// 延迟 1s
delay(1000);
// 熄灭 led
digitalWrite(led_pin, LOW);
// 延迟 1s
delay(1000);
}
流水灯实验
//定义 GPIO 引脚数组
int pin_list[5] = {13,12,14,27,26};
//获取数组长度
int num = sizeof(pin_list)/sizeof(pin_list[0]);
void setup() {
// 设置所有引脚为输出模式
for(int i=0;i<num;i++){
pinMode(pin_list[i], OUTPUT);
}
}
void loop() {
// 所有引脚设置高电平
for(int i=0;i<num;i++){
digitalWrite(pin_list[i], HIGH);
delay(50);
}
// 所有引脚设置低电平
for(int i=num-1;i>=0;i--){
digitalWrite(pin_list[i], LOW);
delay(50);
}
}