当前位置: 首页 > 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.dtcms.com/a/297173.html

相关文章:

  • 迷宫生成与寻路可视化
  • 广州 VR 安全用电技术:工作原理、特性及优势探析​
  • 天通卫星赋能三防智能平板:AORO P1100打造全域通信新范式
  • 【数据结构与算法】数据结构初阶:详解二叉树(六)——二叉树应用:二叉树选择题
  • 【数据库】探索DBeaver:一款强大的免费开源数据库管理工具
  • 医疗数据挖掘Python机器学习案例
  • PAT 甲级题目讲解:1008《Elevator》
  • Agent领域,近年来的前沿研究方向:多智能体协作、认知启发架构、伦理安全、边缘计算集成
  • Modbus RTU转Profinet网关与涡街液体流量计:工业自动化数据传输的完美协同
  • 【橘子分布式】gRPC(番外篇-拦截器)
  • 关闭chrome自带的跨域限制,简化本地开发
  • XORIndex:朝鲜不断发展的供应链恶意软件再次瞄准 npm 生态系统
  • 《基于电阻抗断层扫描(EIT)驱动的肌肉骨骼模型表征人体手臂动态意图用于人机交互》论文解读
  • Linux: network: wireshark: esp attempt to detec null-encrypted esp payloads
  • chrome使用Modheader插件让浏览器直接预览图片,不下载
  • 算法思维进阶 力扣 62.不同路径 暴力搜索 记忆化搜索 DFS 动态规划 C++详细算法解析 每日一题
  • kafka如何保证数据不丢失
  • 机器学习中knn的详细知识点
  • Linux725 磁盘阵列RAID0 RAID1
  • OneCode3.0 Gallery 组件前后端映射机制:从注解配置到前端渲染的完整链路
  • 应用代码解释
  • 从零开始的云计算生活——番外6,使用zabbix对中间件监控
  • pycharm安装教程-PyCharm2023安装详细步骤【MAC版】【安装包自取】
  • Spring 策略模式实现
  • 配置Mac/Linux终端启动执行脚本
  • 电子电子架构 --- 软件项目的开端:裁剪
  • 现代 C++ 开发工作流(VSCode / Cursor)
  • ubuntu/centos系统ping 不通域名的解决方案
  • 清理DNS缓存
  • Ubuntu 环境下创建并启动一个 MediaMTX 的 systemd 服务