【ESP32 IDF】WS2812B灯驱动

news2024/11/25 13:54:00

WS2812B灯驱动

  • 1. 简单描述
  • 2. 驱动过程
  • 3.主函数添加驱动程序

1. 简单描述

  1. 开发环境为 IDF5.2.2
  2. 采用乐鑫官方组件库
  • 组件库地址 :
    https://components.espressif.com/components/espressif/led_strip/versions/2.5.5

2. 驱动过程

  • 复制led_strip组件命令

在这里插入图片描述

  • 在自己项目里面添加led_strip组件

在这里插入图片描述

  • 编译生成managed_components 和 espressif__led_strip

在这里插入图片描述

3.主函数添加驱动程序

/*
 * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
 *
 * SPDX-License-Identifier: Unlicense OR CC0-1.0
 */
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "led_strip.h"
#include "esp_log.h"
#include "esp_err.h"

// GPIO assignment
#define LED_STRIP_BLINK_GPIO  GPIO_NUM_48
// Numbers of the LED in the strip
#define LED_STRIP_LED_NUMBERS 24

static const char *TAG = "example";

led_strip_handle_t configure_led(void)
{
    // LED strip general initialization, according to your led board design
    led_strip_config_t strip_config = {
        .strip_gpio_num = LED_STRIP_BLINK_GPIO,   // The GPIO that connected to the LED strip's data line
        .max_leds = LED_STRIP_LED_NUMBERS,        // The number of LEDs in the strip,
        .led_pixel_format = LED_PIXEL_FORMAT_GRB, // Pixel format of your LED strip
        .led_model = LED_MODEL_WS2812,            // LED strip model
        .flags.invert_out = false,                // whether to invert the output signal
    };

    // LED strip backend configuration: SPI
    led_strip_spi_config_t spi_config = {
        .clk_src = SPI_CLK_SRC_DEFAULT, // different clock source can lead to different power consumption
        .flags.with_dma = true,         // Using DMA can improve performance and help drive more LEDs
        .spi_bus = SPI2_HOST,           // SPI bus ID
    };

    // LED Strip object handle
    led_strip_handle_t led_strip;
    ESP_ERROR_CHECK(led_strip_new_spi_device(&strip_config, &spi_config, &led_strip));
    ESP_LOGI(TAG, "Created LED strip object with SPI backend");
    return led_strip;
}

void app_main(void)
{
    led_strip_handle_t led_strip = configure_led();
    bool led_on_off = false;

    ESP_LOGI(TAG, "Start blinking LED strip");
    while (1) {
        if (led_on_off) {
            /* Set the LED pixel using RGB from 0 (0%) to 255 (100%) for each color */
            for (int i = 0; i < LED_STRIP_LED_NUMBERS; i++) {
                ESP_ERROR_CHECK(led_strip_set_pixel(led_strip, i, 255, 0, 0));
            }
            /* Refresh the strip to send data */
            ESP_ERROR_CHECK(led_strip_refresh(led_strip));
            ESP_LOGI(TAG, "LED ON!");
        } else {
            /* Set all LED off to clear all pixels */
            ESP_ERROR_CHECK(led_strip_clear(led_strip));
            ESP_LOGI(TAG, "LED OFF!");
        }

        led_on_off = !led_on_off;
        vTaskDelay(pdMS_TO_TICKS(500));
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

密钥分发与公钥认证:保障网络通信的安全

在网络通信中&#xff0c;密钥的安全分发和公钥的有效认证是确保系统安全的关键。本文将为基础小白介绍密钥分发与公钥认证的基本概念和实际应用&#xff0c;帮助大家更好地理解这些技术如何保障我们的网络通信安全。 1. 密钥分发与公钥认证的背景 由于密码算法是公开的&…

数仓基础(九):各大公司实时数仓实践

文章目录 各大公司实时数仓实践 一、网易实时数仓实践 二、汽车之家实时数仓实践 三、顺丰实时数仓实践 四、​​​​​​​腾讯实时数仓实践 五、​​​​​​​​​​​​​​滴滴实时数仓实践 ​​​​​​​​​​​​​​各大公司实时数仓实践 一、网易实时数仓实践…

OpenHarmony编译开发:hiperf应用优化调试命令行工具实践

简介 hiperf 是 OpenHarmony 为开发人员提供的用于调试的命令行工具&#xff0c;用于抓取特定程序或者系统的性能数据,类似内核的 perf 工具&#xff0c;该工具支持在 Windows/Linux/Mac 等操作系统上运行。 架构 目录 /developtools/hiperf ├── demo # demo 程序 │ …

单片机-串口通信(二)

目录 一、串口概念 1.相关概念&#xff1a; 按数据传输方式分类&#xff1a; 按时钟分类 二、STM32F103ZET6中串口 USART特性&#xff1a; NRZ数据格式&#xff1a; 三、配置串口通信 查看硬件原理图 软件配置流程 USART相关的寄存器 新建my_usart1.c和my_usart1.h …

Python 中 9 种关键文件类型你了解几个?

当你遇到名称以 .ipynb、.pyi、.pyc 等结尾的 Python 文件时&#xff0c;你是否会感到困惑&#xff1f; 你想知道所有这些文件类型之间的区别吗&#xff1f;今天就和大家一起了解所有这些 Python 文件类型。&#x1f642; .py文件&#xff1a;标准 Python 源代码 不用多说&a…

C++:this指针详解

目录 一、this指针 二、C和C语言实现Stack对比 一、this指针 • Date类中有 Init 与 Print 两个成员函数&#xff0c;函数体中没有关于不同对象的区分&#xff0c;那当d1调用Init和 Print函数时&#xff0c;该函数是如何知道应该访问的是d1对象还是d2对象呢&#xff1f;那么这…

【蔡英丽医生】颈动脉斑块:认识它,预防它,应对它

在我们日常的健康检查中&#xff0c;颈动脉斑块这个词可能会不经意间跃入眼帘&#xff0c;尤其是对于40岁以上的朋友们来说&#xff0c;它的出现率更是居高不下。据调查数据显示&#xff0c;我国40岁以上人群中&#xff0c;颈动脉斑块的检出率超过40%&#xff0c;而60岁以上的人…

【UE5】控件蓝图——树视图(TreeView)的基本使用

目录 前言 效果 步骤 一、显示根节点 二、显示子节点 前言 我们在视口中添加1个方块&#xff0c;2个球体&#xff0c;5个圆柱 它们在大纲视图中的层级关系如下&#xff0c;那么如何将这种层级关系显示在树视图中是本篇文章要解决的问题。 效果 步骤 一、显示根节点 1…

【靶场】Pikachu—XSS Cross-Site Scripting(前五关)

&#x1f3d8;️个人主页&#xff1a; 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞&#x1f44d;收藏&#x1f497;支持一下哦 【靶场】Pikachu—XSS Cross-Site Scripting&#xff08;前五关&#xff09; 第一关 反射型xss(get)第二关 反射型xss(post)第三关…

WeSiGJ的系列文章目录

文章目录 Cbasic 面试基础知识系列 23种 设计模式[创建式模式Creative Mode][结构型模式Structural pattern][行为模式Behavioral patterns] 关于作者支持作者 C basic 面试基础知识系列 abstractassertbit_fieldbit_operationCFeaturesconstdecltype 多态double_colon 冒号e…

宝塔官网下载地址

宝塔官网下载地址

启服云专利管理系统 高效管理创新成果

在知识经济时代&#xff0c;专利作为企业的核心竞争力和创新成果的重要载体&#xff0c;其管理效率与保护水平直接关系到企业的市场竞争力与未来发展。启服云管理软件作为一款集智能化、高效化、安全化于一体的为科技服务和知识产权领域设计的SaaS解决方案&#xff0c;旨在帮助…

采购火热!开学返校季这几类产品卖爆了!电商选品指南

9 月开学季&#xff0c;对于学生和家长来说&#xff0c;是一个充满新希望和新开始的时节。对于电商而言&#xff0c;这也是一个重要的销售节点&#xff0c;把握好开学季的需求&#xff0c;进行精准选品&#xff0c;能够带来丰厚的收益。 一、学生文具类 1、 笔记本 无论是传…

zhidianyun01/基于 ThinkPHP+Mysql 灵活用工+灵活用工源码+灵活用工平台源码

‌‌灵活用工‌是一种灵活形式的用工方式&#xff0c;它涵盖了多种形态&#xff0c;包括非全日制用工、‌劳务派遣、‌业务外包等。这种用工方式允许企业在不同需求下灵活地按需聘用人才&#xff0c;而不必建立正式的全职劳动关系。灵活用工的核心在于其灵活性和按需性&#xf…

使用 ELK Stack 进行云原生日志记录和监控:AWS 中的开发运营方法

使用 ELK Stack 进行云原生日志记录和监控 欢迎来到雲闪世界。在当今的云原生世界中&#xff0c;日志记录和监控是强大的 DevOps 策略的重要组成部分。监控应用程序性能、跟踪错误和分析日志对于确保无缝操作和主动识别潜在问题至关重要。在本文中&#xff0c;我们将指导您使用…

搞定——pip 升级失败!pip._vendor.urllib3.exceptions.ReadTimeoutError 这个闹心的问题

pip 升级失败的解决方法 由于网络原因&#xff0c;可能很多小伙伴们都遇到过pip 升级失败的这个问题把&#xff01;提示如下&#xff1a; pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(hostfiles.pythonhosted.org, port443): Read timed out. 怎…

Java学习日记(day26)

一、MVC MVC全名是Model View Controller&#xff0c;是模型(model)&#xff0d;视图(view)&#xff0d;控制器(controller)的缩写&#xff0c;一种软件设计典范&#xff0c; 用一种业务逻辑、数据、界面显示分离的方法组织代码&#xff0c;将业务逻辑聚集到一个部件里面&…

Java基础(8)- Java代码笔记5

目录 一、static关键字 1.概述&#xff1a;静态关键字 2.使用 a.修饰一个成员变量 b.修饰一个方法 3.调用静态成员&#xff1a;类名直接调用&#xff08;不用new对象&#xff09; 4.静态成员特点&#xff1a; 5.static修饰成员的访问特点 6.静态成员在开发中的使用场景…

搭建 canal 监控mysql数据到Elasticsearch(总结)

搭建 canal 监控mysql数据到 elasticsearch 中 需求: 要将 MySQL 数据库 info 中的 notice 和 result 表的增、删、改操作同步到 Elasticsearch 的 notice 和 result 索引&#xff0c;您需要正确配置 MySQL、Canal 、Canal Adapter 、 Elasticsearch 和 kibana 系统rocky9.2…

Django + websocket 连不上

看了网上的几个简单例子&#xff0c;一步一步做&#xff0c;但无一成功。都连不上websocket。 后来按一个视频教程的操作步骤来做&#xff0c;成功了。差别在于视频教程中加了 pip install daphne 和setting.py中 连不上的表现&#xff1a; 前端报错&#xff1a; WebSock…