WS2812B RGB灯带使用

news2024/11/23 18:29:28

💥💥💞💞欢迎来到本博客❤️❤️💥💥
本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~

📋📋📋本文目录如下:🎁🎁🎁

    • 一.芯片简介
      • 1.简介
      • 2.管脚封装
    • 二.控制原理
      • 1.数据协议
      • 2.级联控制
    • 三.实现代码

一.芯片简介

1.简介

WS2812是一个集控制电路与发光电路于一体的智能外控LED光源,外形一般为5050封装,每个LED灯珠为一个像素点,支持RGB无极调色,同时每颗灯珠内部集成有智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和可编程定电流控制部分,有效保证了像素点光的颜色高度一致。

2.管脚封装

在这里插入图片描述

二.控制原理

1.数据协议

数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,控制显示不同的颜色。
在这里插入图片描述

  • 0码:高电平持续200ns - 380ns后跳变为低电平,低电平持续580ns - 1us;
  • 1码:高电平持续580 - 1us后跳变为低电平,低电平持续580ns - 1us;
  • Resset码:低电平保持时间大于280us

2.级联控制

首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅受限信号传输速度要求。
在这里插入图片描述

三.实现代码

#include <Arduino.h>
//定义IO引脚
#define PIN_LED 16

typedef struct 
{
  /* data */
  uint R;
  uint G;
  uint B;  
}t_color;


void delay_337_ns()
{
    for (int i = 0; i < 1; i++)
    {
        NOP();
    }
}

void delay_600_ns()
{
    uint32_t count = 10;
    for (int i = 0; i < count; i++)
    {
        NOP();
    }
}

void delay_280_us()
{
    uint32_t count = 280 * 40;
    for (uint32_t i = 0; i < count; i++)
    {
        NOP();
    }
}

/**
 * @brief 发送0 Code
 * 
 */
void set_0_num()
{
    digitalWrite(PIN_LED, HIGH);
    delay_337_ns();
    digitalWrite(PIN_LED, LOW);
    delay_600_ns();
}

/**
 * @brief 发送1 Code
 * 
 */
void set_1_num()
{
    digitalWrite(PIN_LED, HIGH);
    delay_600_ns();
    digitalWrite(PIN_LED, LOW);
    delay_600_ns();
}

/**
 * @brief 发送reset
 * 
 */
void set_reset()
{
    digitalWrite(PIN_LED, LOW);
    delay_280_us();
}

void ws2812b_writebyte(uint8_t  dat )
{
 for(int8_t i = 0;i<8;i++){ //最高位
    if(dat & 0x80){
    set_1_num(); 
    }
    else 
      set_0_num();
      dat<<1;
 } 
}

void ws2812b_writecolor(t_color *pColor){

  ws2812b_writebyte(pColor->G);
  ws2812b_writebyte(pColor->R);
  ws2812b_writebyte(pColor->B);
}

/**
 * @brief 多LED控制    
    //  BL_Color 0x000000   //关---清空颜色
    //  W_Color  0xFFFFFF    //白光
    //  R_Color  0xFF0000   //红色
    //  G_Color  0x00FF00   //绿色
    //  B_Color  0x0000FF   //蓝色
 * 
 */

void ws2812b_more_led_test()
{
  t_color temp;
  temp.R = 0x00;
  temp.G = 0xff;
  temp.B = 0x00;

  const int PIXEL_NUM = 10;   // 长度
  while(true){
      for(uint8_t i = 0; i< PIXEL_NUM; i++){

        ws2812b_writecolor(&temp);
      }
      set_reset();

  }

}

void setup()
{
    Serial.begin(9600);
    Serial.printf("setup\n");
    pinMode(PIN_LED, OUTPUT);
}

void loop()
{
    ws2812b_more_led_test();
  
}

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

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

相关文章

嵌入式linux开发工具——vscode

目录 一、工具下载及安装 下载 安装 二、工具配置 在嵌入式开发中常用的工具就两个source和vscode&#xff0c;个有利弊。之前讲过source今天来讲一下vscode。 一、工具下载及安装 下载 https://code.visualstudio.com 选择需要的版本就行 x86是32位架构&#xff0c;x64…

笔记系统项目测试

一、测试用例 1.1功能测试 1.2性能测试 1.3界面测试 1.4兼容性测试 1.5易用性测试 1.6安全性测试 二、自动化测试 那就对上面的部分用例进行自动化测试 Selenium3 Junit5 2.1注册页面自动化测试 /*** 针对两次输入密码不一致进行验证* param username* param password* pa…

无涯教程-Perl - readline函数

描述 此函数从EXPR引用的文件句柄中读取一行,并返回输出。如果要直接使用FILEHANDLE,则必须将其作为typeglob传递。 Simply readline function is equvivalent to <>. 语法 以下是此函数的简单语法- readline EXPR返回值 此函数在标量context中仅返回一行,而在列表…

预测知识 | 机器学习预测模型局限性

预测知识 | 机器学习预测模型局限性 目录 预测知识 | 机器学习预测模型局限性问题描述未来发展参考资料 问题描述 数据基础设施&#xff1a;要构建模型&#xff0c;必须有数据&#xff0c;且有多来源的大数据。这一切都离不开数据基础设施的建设和发展。 错误数据输入&#xf…

「Web3大厂」价值70亿美元的核心竞争力

经过近 5 年的研发和酝酿&#xff0c;Linea 团队在 7 月的巴黎 ETHCC 大会期间宣布了主网 Alpha 的上线&#xff0c;引起了社区的广泛关注。截止 8 月 4 日&#xff0c;据 Dune 数据信息显示&#xff0c;其主网在一周内就涌入了 100 多个生态项目&#xff0c;跨入了超 2 万枚 E…

RabbitMQ基础(2)——发布订阅/fanout模式 topic模式 rabbitmq回调确认 延迟队列(死信)设计

目录 引出点对点(simple)Work queues 一对多发布订阅/fanout模式以登陆验证码为例pom文件导包application.yml文件rabbitmq的配置生产者生成验证码&#xff0c;发送给交换机消费者消费验证码 topic模式配置类增加配置生产者发送信息进行发送控制台查看 rabbitmq回调确认配置类验…

BGP的工作过程及报文

IGP核心:路由的计算。OSPF,ISIS等 BGP核心:路由的传递,不产生路由,只是路由的搬运工,一般用于规模特别大的网络中,只要TCP可达就可以建立邻居。 大型企业分支间采用BGP进行路由传递,不同的分支属于不同的BGP的AS,它们通过BGP进行路由交互。企业与运营商之间可使用BGP进行…

编写一个函数实现n的k次方,使用递归实现

在这个问题中&#xff0c;我们要考虑k的取值正负。 代码实现&#xff1a; #include <stdio.h> double Pow(int n, int k) {if (k > 0)return n * Pow(n, k - 1);else if (k 0)return 1;elsereturn 1.0 / Pow(n, -k); }int main() {int n 0;int k 0;scanf("%d…

期权定价模型系列【4】—期权组合的Delta-Gamma-Vega中性

期权组合的Delta-Gamma-Vega中性 期权组合构建时往往会进行delta中性对冲&#xff0c;在进行中性对冲后&#xff0c;期权组合的delta敞口为0&#xff0c;此时期权组合仍然存在gamma与vega敞口。因此研究期权组合的delta-gamma-vega敞口中性是有必要的。 本文旨在对delta-gamma-…

面向未来的颠覆性技术创新

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在学习摘录和笔记专…

Leetcode 剑指 Offer II 039. 直方图最大矩形面积

题目难度: 困难 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定非负整数数组 heights &#xff0c;数组中的数字用来表示柱状…

大脑营行|“福安市华龙教育基金”支持家乡教育事业发展

8月8日&#xff0c;福安市松罗中学举行“福安市华龙教育基金”中考奖学金颁发仪式。福安市松罗乡党委书记钟文、乡长郑仁寿、福安市人民政府教育督导室副科级督导员&#xff08;片区领导&#xff09;陈秦、校长张明亮、各村支部书记、家长代表、受奖学生&#xff0c;校领导班子…

LabVIEW使用图像处理进行交通控制性能分析

LabVIEW使用图像处理进行交通控制性能分析 采用普雷维特、拉普拉斯、索贝尔和任意的空间域方法对存储的图像进行边缘检测&#xff0c;并获取实时图像。然而&#xff0c;对四种不同空间域边缘检测方法的核的性能分析。 以前&#xff0c;空路图像存储在数据库中&#xff0c;道路…

C语言实例_调用SQLITE数据库完成数据增删改查

一、SQLite介绍 SQLite是一种轻量级的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是一个开源的、零配置的、服务器端的、自包含的、零管理的、事务性的SQL数据库引擎。它被广泛应用于嵌入式设备、移动设备和桌面应用程序等领域。 SQLite的特点包括&…

使用wxPython和PyMuPDF在Python中显示PDF目录的实现

展示如何使用wxPython和PyMuPDF库在Python中选择PDF文件并将目录显示在列表框中。 简介&#xff1a; 在本篇教程中&#xff0c;我们将学习如何使用wxPython和PyMuPDF库在Python中选择PDF文件&#xff0c;并将其目录显示在一个列表框中。这将使用户能够方便地浏览PDF文档的目录…

每天一道leetcode:72. 编辑距离(动态规划困难)

今日份题目&#xff1a; 给你两个单词 word1 和 word2&#xff0c; 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作&#xff1a; 插入一个字符 删除一个字符 替换一个字符 示例1 输入&#xff1a;word1 "horse", word…

文心一言 VS 讯飞星火 VS chatgpt (75)-- 算法导论7.2 4题

四、如果用go语言&#xff0c;银行一般会按照交易时间来记录某一账户的交易情况。但是&#xff0c;很多人却喜欢收到的银行对账单是按照支票号码的顺序来排列的。这是因为&#xff0c;人们通常都是按照支票号码的顺序来开出支票的&#xff0c;而商人也通常都是根据支票编号的顺…

centos7升级glibc2.28

1 概述 centos7自带的glibc对于某些软件是太旧的&#xff0c;决定将glibc升级至2.28。 2 安装过程 2.1 下载glibc源码 mkdir -p /opt/third-party && cd /opt/third-party wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz tar -xf glibc-2.28.tar.gz cd glibc…

ubuntu下gif动态图片的制作

Gif图片比视频小, 比静态JPG图片形象生动, 更适用于产品展示和步骤演示等。各种各样的gif动图为大家交流提供很大的乐趣. 这里简单介绍ubuntu系统下gif图的制作。 一、工具安装: kazam和ffmpeg kazam是linux下的一款简单但是功能强大的屏幕录制工具. 它可录制声音并选择全屏录…

【Kali】vmware虚拟机三种网络连接方式,ms17-010 , ms08_067的复现

【Kali】vmware虚拟机三种网络连接方式&#xff0c;ms17-010 &#xff0c; ms08_067的复现 nmapmsfconsolevmware虚拟机三种网络连接方式ms17-010ms08_067 kali中对windowsXP、windows 7漏洞利用使用到的工具&#xff1a;nmap、msfconsole。 nmap nmap是一个网络连接端扫描软件…