Arduino控制WS2812灯带(灯环)
设计者: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灯带(灯环)相关推荐
- 小爱同学、Blinker 控制esp32自带灯熄灭---Micropython版本
操作官方案例修改增加小爱同学控制支持,具体代码上传到github可以参考,有帮助的话麻烦请star支持下,有细节问题也麻烦指出和交流 github地址: https://github.com/lonn ...
- esp32 Micropython bluetooth手机蓝牙控制板子自带灯熄灭
参考:https://doc.itprojects.cn/0006.zhishi.esp32/02.doc/index.html#/c03.servo.ble from machine import ...
- 【小项目关键技术五】控制全彩 WS2812 灯环/灯带
Ref: Arduino控制WS2812灯带(灯环) #include <FastLED.h>#define LED_PIN 13// Information about the LED ...
- Arduino控制1302颗ws2812灯珠显示圣诞树和圣诞老人(附程序源码)
Arduino控制1302颗ws2812灯珠显示圣诞树和圣诞老人 设计者:STCode(公众号同名) 效果直接看视频~ Arduino控制ws2812灯带显示圣诞树和圣诞老人 1)项目介绍 该设计一共 ...
- Arduino点亮LED灯带
物品清单 名称 规格 数量 开发板 Arduino 1 杜邦线 公公 母母 公母 若干 灯带 30/60珠 1 电源 5V 2000A左右 1 面包板 1 相关代码 相关库:FastLED 示例代码 ...
- 几款LED灯带作为反向电流感应测试
文章目录 ▌01 LED灯带光敏感器 1.为什么使用LED灯带作为光敏感器? 2.几款LED灯排 3.测量项目 ▌02 LED灯带测量 1.LED灯带2 (1)基本结构 (2)电路成分 (3)LED基 ...
- rj45插座尺寸图_带灯RJ45插座接口定义及使用说明
说到带灯 带灯RJ插座示例图 带灯RJ插座引脚接口图 带灯RJ45插座接线方法 带灯RJ45插座的接口内部脚位一般是由八芯组成,而且在目前常用的接线方法上是区分有两种连接方式的,一种是T568A标准连 ...
- esp32 控制ws2812灯带
采用的arduino控制,利用别人写好的模块进行控制 vs code搜索Adafruit_NeoPixel导入项目中 代码实现 #include <Adafruit_NeoPixel.h> ...
- arduino学习——WS2812灯带
WS2812灯带程序 简介 示例程序 程序拓展(1) 程序拓展(2) 拓展程序(3)---fill_solid()函数 灯带颜色的设置 (1)CRGB RGBcolorName(rVal,gVal,b ...
最新文章
- 启动ActiveMQ时报端口被占用异常
- 比较字符串a和b的大小
- linux搜狗输入法配置,liunx----配置搜狗输入法
- 编程:要求随机产生30到小学2年级的四则运算题
- Bootstrap按钮组中按钮的尺寸
- 用poi-3.6-20091214.jar 实现java给excel资料加密
- SpringMVC中@Controller和@RequestMapping
- 问题 J: 十进制整数转二进制
- 解决 Linux 下 Sublime Text 中文输入
- ajax请求数据之后在已经有的数据前面打对勾的方法
- hutool 读取扩展名文件_如何快速的搜索文件,Everything使用技巧
- java家庭账本_java家庭记账系统
- 资源下载源码极致cms精纺资源网的模板整站源码
- C语言论坛系统课程设计
- java中length的使用法_java -length的三种用法说明
- 叮叮获取所有用户信息_使用Postman获取微信公众号用户列表,循环遍历查询所有用户的详细信息...
- Qt3升至Qt4需要注意的几件事项浅谈
- C#如何获取局域网ip地址
- ElasticSearch7 集群安装和配置
- 高等数学——砍瓜切菜算积分的分部积分法
热门文章
- 第八次网页前端培训(JavaScript)
- 关于likely()与unlikely函数
- js计算当前时间的为年的第几周,以及周对应的时间范围
- 你真的认为自己熟练Python?带你一篇文章 查漏补缺,感受自己离深入掌握 Python 还有多远。
- Java解析Xml的三种方式总结
- IC数字芯片学习各类公众号汇总
- java 数组与arraylist_java的数组和arraylist
- 编译期 java.lang.IllegalArgumentException
- Linux环境下使用JFS文件系统介绍
- 机器人操作系统ROS(4)话题编程