用esp32点亮一颗LED灯

实战派 ESP32-S3,双模无线开发板

ESP32-S3 原生支持 ESP-IDF,WiFi + 蓝牙一次搞定

点亮LED灯

前言

这是我第一次进行系统的学习esp32开发板,我将在接下来的一段时间与各位分享我学习esp32的学习过程,与各位共勉,一起进步!
这是我买的开发板产品链接:esp32开发板(淘宝 )

一、点亮一颗LED

物料清单:

材料名称数量
直插式 LED1
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流水灯效果

物料清单:

材料名称数量
直插式 LED5
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灯的亮灭

物料清单:

材料名称数量
直插式 LED1
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灯。
物料清单:

材料名称数量
直插式 LED1
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的代码更简洁。

实战派 ESP32-S3,双模无线开发板

ESP32-S3 原生支持 ESP-IDF,WiFi + 蓝牙一次搞定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值