点亮LED灯
前言
这是我第一次进行系统的学习esp32开发板,我将在接下来的一段时间与各位分享我学习esp32的学习过程,与各位共勉,一起进步!
这是我买的开发板产品链接:esp32开发板(淘宝 )
一、点亮一颗LED
物料清单:
| 材料名称 | 数量 |
|---|---|
| 直插式 LED | 1 |
| 1kΩ 电阻 | 1 |
| 杜邦线(跳线) | 2 |
| 面包板 | 1 |
LED正极接D13,负极串联一个电阻并接GND,如下图:

注意!一定要接电阻,不然会因为电流过大烧毁LED灯。
要想点亮一颗LED灯,需要先将引脚(D13)设定为输出模式,然后赋值一个高电平。
以下是代码(VS code):
#include <Arduino.h>
int led_pin = 13;
void setup() {
pinMode(led_pin, OUTPUT);//将引脚设定为输出模式
digitalWrite(led_pin, HIGH);//至高电平,点亮LED
}
void loop() {
}
烧录代码到开发板,就会看到电路中的LED灯被点亮。
二、实现LED灯的闪烁
要想实现LED灯的闪烁,只需要不断地给LED灯设置高电平和低电平并延时即可。需要注意的是,setup中代码只执行一次,loop中代码循环执行,因此,设置高电平和低电平的代码应在loop中执行。
以下是代码:
#include <Arduino.h>
int led_pin = 13;
void setup() {
pinMode(led_pin, OUTPUT);
}
void loop() {
digitalWrite(led_pin, HIGH);
delay(1000);//延时1000ms
digitalWrite(led_pin, LOW);
delay(1000);
}
三、实现LED流水灯效果
物料清单:
| 材料名称 | 数量 |
|---|---|
| 直插式 LED | 5 |
| 1kΩ 电阻 | 5 |
| 杜邦线(跳线) | 6 |
| 面包板 | 1 |
五个LED灯共用一个负极,如下图所示:

因为我们需要用到多个引脚,所以最好是把所有引脚放在一个数组中,然后遍历数组,代码如下:
#include <Arduino.h>
int led_pin[]={13,12,14,27,26};
void setup() {
for(int i=0;i<5;i++){
pinMode(led_pin[i], OUTPUT);
}
}
void loop() {
for(int i=0;i<5;i++){
digitalWrite(led_pin[i], HIGH);
delay(100);
digitalWrite(led_pin[i], LOW);
delay(100);
}
}
四、按键控制LED灯的亮灭
物料清单:
| 材料名称 | 数量 |
|---|---|
| 直插式 LED | 1 |
| 1kΩ 电阻 | 1 |
| 杜邦线(跳线) | 2 |
| 面包板 | 1 |
| 4脚按键 | 1 |
按键一端接D14,一端接3V3引脚,LED接D13,不要忘记正极连接电阻,连接方式如下:

在编写代码时,先定义两个引脚,再定义两个额外变量,INPUT_PULLDOWN用来设置引脚为下拉电阻,以确定初始电平状态;代码digitalWrite(pin_led, led_logic)中led_logic为0代表低电平LOW,代码如下:
#include <Arduino.h>
int pin_led=13;
int button_pin= 14;
int led_logic=0;
bool status=false;
void setup() {
pinMode(pin_led, OUTPUT);
pinMode(button_pin, INPUT_PULLDOWN);//pull down button
}
void loop() {
if(digitalRead(button_pin)){
delay(10);
if(digitalRead(button_pin)&&!status)
{
led_logic=!led_logic;
digitalWrite(pin_led, led_logic);
status=!status;
}
else if(!digitalRead(button_pin)){
status=false;
}
}
}
五、PWM呼吸灯
PWM(Pulse Width Modulation)通过调节输出不同频率、占空比的方波,以实现固定频率或平均电压输出,以我在学习51单片机时的理解就是设置一个一百的周期(时间非常短),让LED亮前50个周期,灭后50个周期,而1秒后非常多个一百的周期,这时肉眼看不到LED灯闪烁的变化,只会看到一个50%亮度的LED灯。
物料清单:
| 材料名称 | 数量 |
|---|---|
| 直插式 LED | 1 |
| 1kΩ 电阻 | 1 |
| 杜邦线(跳线) | 2 |
| 面包板 | 1 |
连接方式和标题一是一样的,不要忘记连接一个电阻哦。
用analongWrite(pin,value)函数控制亮度,pin:要写入的引脚,数据类型为int;value:占空比:介于0(始终关闭)和255(始终开启)之间,数据类型为int。
代码如下:
#include <Arduino.h>
#define led_pin 12
void setup() {
pinMode(led_pin, OUTPUT);
}
void loop() {
for(int i=0;i<256;i++)
{
analogWrite(led_pin, i);
delay(3);
}
for(int i=255;i>=0;i--)
{
analogWrite(led_pin, i);
delay(3);
}
}
这就是本篇文章的全部内容,希望借此机会,督促自己学习esp32,我感觉esp32比51好玩还方便,相同的功能下esp32的代码更简洁。

2137

被折叠的 条评论
为什么被折叠?



