设计者:STCode(公众号同名)

Arduino控制WS2812灯带(灯环)

1) WS2812灯

WS2812灯带

WS2812灯环

WS2812是一个集控制电路与发光电路于一体的智能外空LED光源。其外形与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大电路,还包括有高精度的内部振荡器和可编程电流控制部分,有效保证了像素点的颜色高度一致。
1) FastLED库
FastLED 是一款功能强大、简单易用的控制WS2812等LED光带的Arduino第三方库。 目前FastLED是公认的Arduino开发者应用最为广泛的LED控制库之一。

2) 电路搭建

说明:
当你要用arduino直接驱动一大堆led或别的外部器件时,各引脚电流很容易超标。arduino官方指标只是语焉不详地提到每个引脚电流不超过40mA,Vcc和地总电流不超过200mA。
LED控制电路直流电源要求:
WS2812LED灯带上每一个灯珠都需要60mA左右的电流强度,为了确保灯带正常工作,需要配备的直流电源要能提供充足的电流强度为灯带供电。
例:一条带有30个灯珠的灯带,如果要为它配备电源则需要直流电源的输出电流强度为1.5安培 ~ 2安培左右。(即如果需要驱动数量较多的灯,可以外接电源,注意要将WS2812灯带与Arduino共地)。

3) 简单示例

1-闪烁LED灯带灯珠

#include "FastLED.h"            // 此示例程序需要使用FastLED库
#define NUM_LEDS 12             // LED灯珠数量
#define DATA_PIN 5              // Arduino输出控制信号引脚
#define LED_TYPE WS2812         // LED灯带型号
#define COLOR_ORDER GRB         // RGB灯珠中红色、绿色、蓝色LED的排列顺序uint8_t max_bright = 128;       // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高
CRGB leds[NUM_LEDS];            // 建立灯带leds
void setup() { LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);  // 初始化灯带FastLED.setBrightness(max_bright);                            // 设置灯带亮度
}void loop() { leds[0] = CRGB::Red;          // 设置灯带中第一个灯珠颜色为红色,leds[0]为第一个灯珠,leds[1]为第二个灯珠FastLED.show();               // 更新LED色彩delay(500);                   // 等待500毫秒
leds[0] = CRGB::Black;        // 设置灯带中第一个灯珠熄灭 FastLED.show();               // 更新LED色彩delay(500);                   // 等待500毫秒
}

4) 实验效果

5) FastLED其他函数介绍

① fillSolid()------将LED灯带设置为同一种颜色

fill_solid(leds, 12, CRGB::Blue)

上述代码将灯带前12个灯珠颜色设置成蓝色。

fill_solid(leds+3, 5, CRGB::Green);

上述代码将leds灯带从头数第4个灯珠开始算起的连续5个灯珠设置为绿色。

② CRGB()------设置具体某颗灯珠的颜色

leds[i] = CRGB (252,228,163);

上述代码将第i+1个灯珠的颜色设置成R:251;G:228;B:163的颜色,例如i为4,则设置的为第5颗灯珠的颜色。

③ fillRainbow()------将LED灯带设置为渐变彩虹色

fill_rainbow(leds, 12, beginHue, deltaHue);

上述代码将leds灯带的前12颗led灯设置为彩虹渐变颜色,beginHue为起始色调,deltaHue为相邻LED灯珠的色调差。

fill_rainbow(leds+3, 12, 0, 1);

上述代码将第4颗开始的连续12颗灯珠设置成渐变彩虹色,,起始色调数为0,相邻两灯珠之间的色调差值为1.

④ Fill_gradient_RGB()设置渐变色

fill_gradient_RGB(leds, 0,CRGB::Blue, 11, CRGB::Green);

上述代码将灯带从头数的12颗灯珠设置为渐变色,灯带其实颜色为蓝色,终端颜色为绿色,中间为两种颜色的渐变色。

fill_gradient(leds, 0, CHSV(255, 0,255) , 11, CHSV(255,255,0), SHORTEST_HUES);

上述代码将从头数的12颗灯珠设置为渐变色,起始颜色为HSV(255,0,255),终端颜色为HSV(255,255,0),过渡方式为短色调过渡。

fill_gradient(leds, 0, CHSV(255, 0,255) , 11, CHSV(255,255,0), LONGEST_HUES);

上述代码过渡方式为长色调过渡。

此外FastLED库还给出了许多直接操作灯珠颜色变化的函数,感兴趣可以仔细研读该库。

更多创意作品请关注公众号:STCode

Arduino控制WS2812灯带(灯环)相关推荐

  1. 小爱同学、Blinker 控制esp32自带灯熄灭---Micropython版本

    操作官方案例修改增加小爱同学控制支持,具体代码上传到github可以参考,有帮助的话麻烦请star支持下,有细节问题也麻烦指出和交流 github地址: https://github.com/lonn ...

  2. esp32 Micropython bluetooth手机蓝牙控制板子自带灯熄灭

    参考:https://doc.itprojects.cn/0006.zhishi.esp32/02.doc/index.html#/c03.servo.ble from machine import ...

  3. 【小项目关键技术五】控制全彩 WS2812 灯环/灯带

    Ref: Arduino控制WS2812灯带(灯环) #include <FastLED.h>#define LED_PIN 13// Information about the LED ...

  4. Arduino控制1302颗ws2812灯珠显示圣诞树和圣诞老人(附程序源码)

    Arduino控制1302颗ws2812灯珠显示圣诞树和圣诞老人 设计者:STCode(公众号同名) 效果直接看视频~ Arduino控制ws2812灯带显示圣诞树和圣诞老人 1)项目介绍 该设计一共 ...

  5. Arduino点亮LED灯带

    物品清单 名称 规格 数量 开发板 Arduino 1 杜邦线 公公 母母 公母 若干 灯带 30/60珠 1 电源 5V 2000A左右 1 面包板 1 相关代码 相关库:FastLED 示例代码 ...

  6. 几款LED灯带作为反向电流感应测试

    文章目录 ▌01 LED灯带光敏感器 1.为什么使用LED灯带作为光敏感器? 2.几款LED灯排 3.测量项目 ▌02 LED灯带测量 1.LED灯带2 (1)基本结构 (2)电路成分 (3)LED基 ...

  7. rj45插座尺寸图_带灯RJ45插座接口定义及使用说明

    说到带灯 带灯RJ插座示例图 带灯RJ插座引脚接口图 带灯RJ45插座接线方法 带灯RJ45插座的接口内部脚位一般是由八芯组成,而且在目前常用的接线方法上是区分有两种连接方式的,一种是T568A标准连 ...

  8. esp32 控制ws2812灯带

    采用的arduino控制,利用别人写好的模块进行控制 vs code搜索Adafruit_NeoPixel导入项目中 代码实现 #include <Adafruit_NeoPixel.h> ...

  9. arduino学习——WS2812灯带

    WS2812灯带程序 简介 示例程序 程序拓展(1) 程序拓展(2) 拓展程序(3)---fill_solid()函数 灯带颜色的设置 (1)CRGB RGBcolorName(rVal,gVal,b ...

最新文章

  1. 启动ActiveMQ时报端口被占用异常
  2. 比较字符串a和b的大小
  3. linux搜狗输入法配置,liunx----配置搜狗输入法
  4. 编程:要求随机产生30到小学2年级的四则运算题
  5. Bootstrap按钮组中按钮的尺寸
  6. 用poi-3.6-20091214.jar 实现java给excel资料加密
  7. SpringMVC中@Controller和@RequestMapping
  8. 问题 J: 十进制整数转二进制
  9. 解决 Linux 下 Sublime Text 中文输入
  10. ajax请求数据之后在已经有的数据前面打对勾的方法
  11. hutool 读取扩展名文件_如何快速的搜索文件,Everything使用技巧
  12. java家庭账本_java家庭记账系统
  13. 资源下载源码极致cms精纺资源网的模板整站源码
  14. C语言论坛系统课程设计
  15. java中length的使用法_java -length的三种用法说明
  16. 叮叮获取所有用户信息_使用Postman获取微信公众号用户列表,循环遍历查询所有用户的详细信息...
  17. Qt3升至Qt4需要注意的几件事项浅谈
  18. C#如何获取局域网ip地址
  19. ElasticSearch7 集群安装和配置
  20. 高等数学——砍瓜切菜算积分的分部积分法

热门文章

  1. 第八次网页前端培训(JavaScript)
  2. 关于likely()与unlikely函数
  3. js计算当前时间的为年的第几周,以及周对应的时间范围
  4. 你真的认为自己熟练Python?带你一篇文章 查漏补缺,感受自己离深入掌握 Python 还有多远。
  5. Java解析Xml的三种方式总结
  6. IC数字芯片学习各类公众号汇总
  7. java 数组与arraylist_java的数组和arraylist
  8. 编译期 java.lang.IllegalArgumentException
  9. Linux环境下使用JFS文件系统介绍
  10. 机器人操作系统ROS(4)话题编程