当前位置: 首页 > news >正文

ESP32学习笔记_Components(1)——使用LED Strip组件点亮LED灯带

LED strip

ESP32-S3 的 RMT(Remote Control Transceiver,远程控制收发器)外设最初设计用于红外收发,但由于其数据格式的灵活性,RMT 可以扩展为通用的信号收发器,能够发送或接收多种类型的信号;RMT 硬件包含物理层和数据链路层,最小数据单元为 RMT 符号,每个通道可独立配置为发送或接收模式,常用于红外遥控、通用序列发生器、多通道同步发送等场景
RMT 之所以可以用于 LED 控制,主要是因为其能够精确地生成特定时序的波形信号,例如,WS2812 等数字 LED 灯带对输入信号的时序要求非常严格,RMT 可以将用户的数据编码为 RMT 格式,通过硬件生成精确的高低电平脉冲,从而驱动 LED 灯带

参考资料:
led strip 库
led strip 库使用说明
led strip 官方示例

在 ESP-IDF 终端中输入以下指令,执行 fullclean 再进行编译,组件管理器会自动下载相应组件

idf.py add-dependency "espressif/led_strip^3.0.1~1"
#include <stdio.h>
#include <inttypes.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
#include "esp_system.h"
#include "led_strip.h"#define WS2812B_GPIO GPIO_NUM_18void app_main(void)
{led_strip_config_t strip_config = {.strip_gpio_num         = WS2812B_GPIO,.max_leds               = 2,  // 两个 LED.led_model              = LED_MODEL_WS2812,.color_component_format = LED_STRIP_COLOR_COMPONENT_FMT_GRB,  // 使用 GRB 格式.flags ={.invert_out = 0,  // 不反转输出信号},};led_strip_rmt_config_t rmt_config = {.clk_src           = RMT_CLK_SRC_DEFAULT,  // different clock source can lead to different power consumption.resolution_hz     = 10 * 1000 * 1000,     // RMT counter clock frequency: 10MHz.mem_block_symbols = 64,                   // the memory size of each RMT channel, in words (4 bytes).flags             = {.with_dma = false,  // DMA feature is available on chips like ESP32-S3/P4}};led_strip_handle_t strip_handle = NULL;ESP_ERROR_CHECK(led_strip_new_rmt_device(&strip_config, &rmt_config, &strip_handle));  // 创建 LED 条设备esp_err_t ret = led_strip_clear(strip_handle);                                         // 清除 LED 条上的所有颜色if (ret != ESP_OK) {printf("Failed to initialize LED strip: %s\n", esp_err_to_name(ret));return;}ret = led_strip_set_pixel(strip_handle, 0, 255, 0, 0);  // 设置第一个 LED 为红色if (ret != ESP_OK) {printf("Failed to set pixel color: %s\n", esp_err_to_name(ret));return;}ret = led_strip_set_pixel(strip_handle, 1, 0, 255, 0);  // 设置第一个 LED 为绿色if (ret != ESP_OK) {printf("Failed to set pixel color: %s\n", esp_err_to_name(ret));return;}ret = led_strip_refresh(strip_handle);  // 刷新 LED 条以显示颜色if (ret != ESP_OK) {printf("Failed to refresh LED strip: %s\n", esp_err_to_name(ret));return;}while (true) {vTaskDelay(pdMS_TO_TICKS(1000));  // Delay to allow system to stabilize}
}
http://www.xdnf.cn/news/1187227.html

相关文章:

  • 图论水题日记
  • MC_GearInPos电子齿轮
  • ISIS高级特性LSP的分片扩展
  • Cacti 前台命令注入漏洞(CVE-2022-46169)
  • 深入解析Linux匿名管道机制与应用
  • 浅析PCIe 6.0 ATS地址转换功能
  • python基础:request模块简介与安装、基本使用,如何发送get请求响应数据,response属性与请求头
  • SpringBoot学习路径--SpringBoot的简单介绍和项目搭建
  • JDK8保姆级安装教程
  • 协作机器人掀起工厂革命:码垛场景如何用数据重塑制造业命脉?
  • day33:零基础学嵌入式之网络——TCP并发服务器
  • 渗透高级-----测试复现(第三次作业)
  • NodeJS搭建SSE接口服务
  • 2025.7.25 测试 总结
  • python学习DAY22打卡
  • 认识编程(3)-语法背后的认知战争:类型声明的前世今生
  • RCE真实漏洞初体验
  • 第三篇:VAE架构详解与PyTorch实现:从零构建AI的“视觉压缩引擎”
  • 练习实践-基础设施-文件共享-windows和linux之间的文件共享-smb服务搭建
  • 【应急响应】进程隐藏技术与检测方式(二)
  • 量子涨落驱动的全局寻优:单光子CIM的理论与实证
  • 在 .NET 中使用 Base64 时容易踩的坑总结
  • CentOS8 使用 Docker 搭建 Jellyfin 家庭影音服务器
  • Android Ntp系统校时流程
  • HTML 常用标签速查表
  • 深入解析 ArkUI 触摸事件机制:从点击到滑动的开发全流程
  • 14-C语言:第14天笔记
  • MyBatis-Plus中使用BaseMapper实现基本CRUD
  • spring boot整合mybatis
  • Haprxy七层代理