Advertisement

WS2812: Arduino用的轻量级WS2811/WS2812/WS2812b库

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
这是一个专为Arduino设计的轻量级库,用于控制WS2811、WS2812和WS2812B LED灯串。它简化了编程复杂度,便于开发者实现多彩灯光效果。 该Arduino库基于Matthias Riegler、Windell H. Oskay 和Freezy的代码;底层位操作部分未经改动,最初由Tim(也称作cpldcpu)对HSV转换进行了修改,这一转换源自Daniel Garcia和Mark Kriegsman在FastLED库中的工作。我简化了原始light_ws2812的使用方式,删除了cRGB数据类型,并为每个像素添加了直接访问RGB和HSV的功能。此外还实现了全局亮度控制功能,类似于FastLED中所使用的亮度调节机制。我还加入了用于增强Arduino IDE语法高亮显示的关键字支持,并将色相转换范围扩大到了整个字节区间,同时增加了对各颜色分量吸气方法的支持。 2015年8月4日Marv(也称作eMGoz或MGOS)完成了上述改进工作。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • WS2812: ArduinoWS2811/WS2812/WS2812b
    优质
    这是一个专为Arduino设计的轻量级库,用于控制WS2811、WS2812和WS2812B LED灯串。它简化了编程复杂度,便于开发者实现多彩灯光效果。 该Arduino库基于Matthias Riegler、Windell H. Oskay 和Freezy的代码;底层位操作部分未经改动,最初由Tim(也称作cpldcpu)对HSV转换进行了修改,这一转换源自Daniel Garcia和Mark Kriegsman在FastLED库中的工作。我简化了原始light_ws2812的使用方式,删除了cRGB数据类型,并为每个像素添加了直接访问RGB和HSV的功能。此外还实现了全局亮度控制功能,类似于FastLED中所使用的亮度调节机制。我还加入了用于增强Arduino IDE语法高亮显示的关键字支持,并将色相转换范围扩大到了整个字节区间,同时增加了对各颜色分量吸气方法的支持。 2015年8月4日Marv(也称作eMGoz或MGOS)完成了上述改进工作。
  • Omega2-Ws2811-LKM: Onion Omega2Linux内核模块,控制WS2811/WS2812 LED
    优质
    Omega2-Ws2811-LKM是一个专为Onion Omega2设计的Linux内核模块,用于高效操控WS2811和WS2812 LED灯串,支持复杂灯光效果。 欧米茄2-ws2811-lkm 是一个为 Onion Omega2 的 Linux 内核设计的模块,用于控制 WS2811 和 WS2812 LED 灯条。此模块利用位冲击技术,因此可以使用任何 GPIO 引脚进行操作,并且支持同时在多个引脚上写入数据,允许将多个 LED 链接到不同的引脚并提高帧率。 要加载这个模块,请先将其 ws2811.ko 文件放入 lib/modules/kernel_version 目录中。该模块有两个参数需要设置: - pins:指定 GPIO 引脚的编号数组。 - led_count:每个引脚上的 LED 数量。 例如,如果您在引脚 11、15、16 和 17 上各连接了300个LED,您可以使用以下命令来加载模块: ``` insmod ws2811 pins=11,15,16,17 led_count=300 ``` 或者,在 `/etc/modules.d/ws2811` 文件中添加上述字符串以自动在系统启动时加载该模块。
  • STM32F103C8T6微控制器操控WS2811(WS2812)灯带
    优质
    本项目介绍如何使用STM32F103C8T6微控制器通过软件算法精确控制WS2811/WS2812智能LED灯带,实现多彩灯光效果。 使用STM32F103C8T6控制WS2811(即WS2812)灯带的方法涉及硬件连接和软件编程两个主要方面。首先需要正确地将STM32的GPIO引脚与LED灯带的数据线相连,然后通过编写代码来实现对LED颜色及亮度等参数的控制。通常情况下,使用特定库函数或自定义代码生成符合WS2811协议的信号以驱动灯带工作是必要的步骤之一。
  • WS2812: 使STM32F4WS2812驱动程序
    优质
    本项目提供了一套基于STM32F4系列微控制器的WS2812 LED灯驱动代码,实现高效、稳定的LED灯控制功能。 自述文件 此存储库包含构建基于 libopencm3 的项目的示例。libopencm3 项目旨在为各种 ARM Cortex-M3 微控制器创建一个开源固件库。 该示例作为 STM32F4 发现板项目的起点,目标是演示如何组织项目。尽管它被设置为使用 STM32F4 发现板为目标硬件,但您也可以轻松地将其调整到其他平台和项目上。 用法 为了获取 libopencm3 子模块,请执行以下命令: ``` git submodule init git submodule update ``` 您可以调用顶层目录中的“make”来编译库及项目固件所需的部分。运行 “make flash” 将尝试使用 arm-none-eabi-gdb 连接一个 Black Magic Probe 并将固件上传到您的目标设备。 贡献 欢迎拉取请求,帮助简化示例并使其更易于适应其他平台和项目。
  • WS2812组件.rar
    优质
    本资源包包含一个用于控制WS2812 LED灯带或点阵的Arduino组件库,内含详细的文档和示例代码,帮助用户轻松实现多彩灯光效果。 使用STM32进行控制,并通过A7口操作,主频为72MHz。驱动程序用于控制120颗全彩LED。虽然一些数组可能不会被用到,但驱动程序肯定是可以工作的。在配置write0和write1时使用了_nop()函数,每个RGB需要执行24次写入操作。
  • Adafruit_NeoPixel:控制单线LED像素(如NeoPixel、WS2812Arduino
    优质
    Adafruit_NeoPixel是一款专为Arduino设计的库,用于驱动单线协议LED灯条和像素模块,如NeoPixel和WS2812。 Adafruit NeoPixel库是Arduino的一个专用库,用于控制单线LED像素和灯条。下载后,请将文件夹重新命名为“Adafruit_NeoPixel”,并将其安装到Arduino Libraries文件夹中。接着重启Arduino IDE,并打开File-> Sketchbook-> Library-> Adafruit_NeoPixel-> strandtest草图。 兼容性提示:目前,AVR处理器不支持端口A的使用。 有两种方法可以将库添加至Arduino IDE: 第一种方法: 1. 在Arduino IDE中选择“Sketch”>“Include Library”>“Manage Libraries”,这会打开一个列表显示已安装或可安装的库。 2. 使用搜索栏查找Neopixel strip,点击对应的条目并选择特定版本进行安装。 第二种方法: 下载最新版Adafruit NeoPixel库。解压zip文件后,在Arduino IDE中导入它。
  • Adafruit_NeoPixel:操控单线LED像素(如NeoPixel、WS2812等)Arduino
    优质
    Adafruit_NeoPixel是一款专为Arduino设计的库,用于控制单线连接的LED像素串,如NeoPixel和WS2812灯条。它使用户能够轻松地编写代码来操控灯光效果。 Adafruit NeoPixel库是用于Arduino的库之一,它能够控制基于单线的LED像素和条带,例如WS2812、SK6812、APA104等。 安装步骤如下: 第一种方法: 在Arduino IDE中选择“草图”>“包含库”>“管理库”,这将打开一个列表显示已安装或可以安装的所有库。 使用搜索栏查找Neopixel strip,然后点击以查看可用版本。选择您需要的特定版本并进行安装。 第二种方法: 直接下载最新版本的Adafruit NeoPixel库文件。 解压缩下载得到的zip文件。 在Arduino IDE中将这个文件夹重命名为“Adafruit_NeoPixel”,并将其放置到您的Arduino Libraries文件夹内。 重启Arduino IDE,然后打开File-> Sketchbook-> Library-> Adafruit_NeoPixel-> strandtest草图。 兼容性说明:目前任何AVR处理器都不支持端口A。
  • STM32使HAL驱动WS2812(RGB灯),不限数
    优质
    本项目介绍如何利用STM32微控制器及HAL库实现对WS2812 RGB灯的编程控制,支持无限扩展的灯光数量,适用于智能硬件和LED显示应用。 使用STM32驱动WS2812 RGB灯在嵌入式开发、智能硬件及物联网设备等领域非常常见。WS2812是一个单线串行接口的RGB LED控制器,支持红绿蓝三色亮度控制,并通过单一数据线传输颜色信息,自动处理内部时序简化了外部设计。 理解WS2812的工作原理至关重要:它采用一种“极性锁存”通信方式。每个LED的颜色分量(R、G、B)由8位二进制组成,按照特定的高电平和低电平组合发送数据,下一个LED会自动从数据线上捕获信息并继续传输。 在STM32中选择一个GPIO口作为WS2812的数据线,并配置为推挽输出模式。通常使用高速GPIO如GPIOA或GPIOB。配置代码如下: ```c HAL_GPIO_Init(GPIOx, &GPIO_InitStruct); GPIO_InitStruct.Pin = WS2812_GPIO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(WS2812_GPIO_PORT, &GPIO_InitStruct); ``` 接下来,编写驱动函数。由于严格的时间要求,需要精确控制高低电平转换来发送数据。推荐使用定时器生成精准的信号,在中断服务程序中切换GPIO状态。 ```c TIM_HandleTypeDef htim; 初始化定时器 HAL_TIM_Base_Init(&htim); 设置频率和占空比 ... 开启定时器 HAL_TIM_Base_Start_IT(&htim); void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { 根据WS2812协议切换GPIO状态 } ``` 要驱动多个LED,需要一个循环来发送每个LED的颜色数据。将RGB颜色转换为高低电平序列并按顺序传输。 ```c void send_ws2812_data(uint8_t* data, uint16_t num_leds) { for (uint16_t i = 0; i < num_leds; i++) { for (uint8_t j = 0; j < 24; j += 8) { 将数据转换为高低电平序列并发送 } } } ``` 最后,确保关闭GPIO和定时器以避免电源泄漏等问题。实际应用中可能需要根据硬件需求进行优化。 通过上述步骤可以构建灵活、可扩展的RGB灯光控制系统,满足不同场景的需求。
  • PWM控制WS2812
    优质
    本简介介绍如何使用脉冲宽度调制(PWM)技术来调整和控制WS2812全彩LED灯的颜色与亮度,适用于电子爱好者及工程师。 STM32基于PWM+DMA驱动WS2812的完整工程,亲测可用。其他类似的芯片也可以使用此方法进行驱动。更多详细的用法可以参考我发布的文章《STM32应用开发——使用PWM+DMA驱动WS2812》。
  • WS2812STM32驱动
    优质
    本项目介绍如何使用STM32微控制器实现对WS2812数字LED灯带的控制,包含硬件连接和软件编程方法。 使用STM32驱动WS2812 LED,并基于STM32CubeMX开发环境进行编程,可以实现90个串联的WS2812 LED灯的效果。