NodeMCU-32S-开发学习-LED控制

本文详细介绍如何使用ESP-IDF开发环境在NodeMCU-32S上控制LED。通过修改示例代码中的GPIO设置,实现对蓝色LED的驱动,使LED以2秒周期闪烁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NodeMCU-32S-开发学习-LED控制

前言

ESP32的开发环境搭建完成了,运行一个最简答的hello_world成功之后,下面就可以测试和学习各种demo了。本文就介绍一个驱动LED的demo。

NodeMCU-32S原理图

在这里插入图片描述
从原理出中能够看出来,NodeMCU-32S 上面包含有两个LED,其中红色LED用于电源指示,蓝色LED连接到了GPIO2上面,由GPIO2驱动,下面就来说明一下如何用ESP-IDF中的demo驱动GPIO2上的LED。

ESP-IDF提供的示例

ESP-IDF中提供了驱动LED的示例,如下的blink工程。

root@qiao-virtual-machine:/esp32/sources/esp-idf/examples/get-started# ls -alh
total 20K
drwxr-xr-x  4 root root 4.0K 12月  5 14:42 .
drwxr-xr-x 12 root root 4.0K 12月  5 14:42 ..
drwxr-xr-x  3 root root 4.0K 12月  4 12:46 blink
drwxr-xr-x  3 root root 4.0K 12月  5 14:42 hello_world
-rw-r--r--  1 root root  202 12月  5 14:42 README.md

需要说明的是 blink/main/blink.c 提供的源文件中定义的宏 BLINK_GPIO 并没有指定哪一个 GPIO,需要我们自己设定,根据上面的原理图,我们这里设定为 GPIO2 。将下面这个宏加入到 blink.c 源码中 。

#define CONFIG_BLINK_GPIO 2

源码

/* Blink Example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "sdkconfig.h"

/* Can run 'make menuconfig' to choose the GPIO to blink,
   or you can edit the following line and set a number here.
*/
#define CONFIG_BLINK_GPIO 2                                     //add GPIO PIN
#define BLINK_GPIO CONFIG_BLINK_GPIO

void blink_task(void *pvParameter)
{
/* Configure the IOMUX register for pad BLINK_GPIO (some pads are
   muxed to GPIO on reset already, but some default to other
   functions and need to be switched to GPIO. Consult the
   Technical Reference for a list of pads and their default
   functions.)
*/
gpio_pad_select_gpio(BLINK_GPIO);
/* Set the GPIO as a push/pull output */
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
while(1) {
/* Blink off (output low) */
gpio_set_level(BLINK_GPIO, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS);
/* Blink on (output high) */
gpio_set_level(BLINK_GPIO, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}

void app_main()
{
xTaskCreate(&blink_task, "blink_task", configMINIMAL_STACK_SIZE, NULL, 5, NULL);
}

编译调试

进入到 blink 工程中,执行 make menuconfig 配置完工程,保存退出,然后编译

  cd /esp32/demos/blink/
  make menuconfig
  make flash monitor

烧写完到NodeMCU-32S 中,观察现象,发现板载的蓝色LED开始以2s的周期闪烁了。

参考链接

NodeMCU-32S 核心开发板Wiki

ESP32S-github工程

### 关于ESP-01S模块的软件开发 #### 开发工具配置 为了进行基于ESP-01S模块的软件开发,需先完成开发环境的搭建。通常情况下,在Arduino IDE环境中可以轻松实现对ESP32系列芯片的支持。具体操作如下:通过`工具->开发板:“XXXX” -> ESP32 Arduino`选项来选择对应的开发板型号,例如NodeMCU-32S作为目标设备[^1]。 #### 软件支持与SDK介绍 乐鑫公司提供了全面的软硬件资源用于支持ESP32设备的研发工作。其官方推出的ESP-IDF框架允许开发者高效构建各类IoT应用方案,涵盖了Wi-Fi连接、经典蓝牙以及低功耗蓝牙等功能需求[^2]。尽管上述描述针对的是ESP32平台,但对于同属乐鑫家族成员之一的ESP8266(含ESP-01S变种),也有相应的非RTOS SDK可供选用。 #### 实验环境说明 本案例中的实际测试过程发生在Windows 10主机之上借助VMware Workstation Pro创建出来的Ubuntu 16.04 LTS虚拟操作系统内部执行完毕全部流程,包括但不限于源码编辑、项目编译直至最终烧录镜像文件到物理硬件上运行验证整个闭环环节均顺利完成[^3]。 #### 示例代码展示 下面给出一段简单的blink程序例子适用于ESP8266架构下的GPIO控制场景: ```c++ #include <ESP8266WiFi.h> const int ledPin = 2; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } ``` 此段脚本实现了周期性点亮熄灭LED灯泡的效果演示功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘雪冰峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值