Arduino 制造光污染 |
您所在的位置:网站首页 › arduino不同型号 › Arduino 制造光污染 |
本文最后更新于 427 天前,其中的信息可能已经有所发展或是发生改变。
内容
隐藏
1
WS2812 是什么样的?
2
WS2812 灯带的特点和应用
2.1
特点
2.2
应用场景
3
WS2812 灯带 配合 Arduino 使用
3.1
连接方式
3.2
找一个合适的库
4
一些常用的点亮方法
4.1
变化颜色
4.2
淡进淡出
4.3
顺序点亮
WS2812 是什么样的?
按照惯例,打开淘宝,输入 WS2812 关键词即可搜到一堆产品,如下图所示(图片来自淘宝)。其中每一个 LED 灯珠可以单独控制,一个 IC(WS2812) 驱动 1个 LED 芯片;可以根据不同的需求有不同灯珠间距可供选择,如 30灯/米、60灯/米、74灯/米、96灯/米、100灯/米、144灯/米等规格;还可以根据实际情况选择灯带的防水处理版本。 WS2812 灯带的特点和应用 特点 高亮度贴片LED灯条。光的均匀性、柔和、色彩丰富。低功耗。各种单色和RGB颜色。应用场景 点亮多彩家居生活, DIY 家用灯的走廊、楼梯、步道。酒店装修使用,剧院、俱乐部、购物中心、节日和表演。建筑装饰照明,拱门,冠桥边缘照明,安全照明和应急。广泛应用于标牌字母背光,隐蔽照明和广告标志照明。适用于汽车和飞机模型装饰,轮廓照明。 WS2812 灯带 配合 Arduino 使用 连接方式一般来说,该灯带中的每个灯珠的连接处有三个 pin 接口,分别为 电源正极(+5v)、电源负极和数据口(D0),且单个灯珠都能单独控制。需要多少个灯珠就用剪刀剪下多少颗灯珠,且这些剪下来的灯珠都可以单独控制(如下图所示)。和 Arduino 相连也是非常的方便,以 Arduino UNO 为例,连接方式对应表格如下所示: Arduino UNOWS 28125VVCCGNDGND任一数字口。(在 Adafruit_NeoPixel 库中,默认为数字口 D6)D0 Arduino UNO 与 WS 2812 的连接对应表 找一个合适的库推荐 Arduino 控制 WS2812 的库文件为 Adafruit_NeoPixel ,可以通过 Github 找到该库文件,直接点击下载 zip 包,在 Arduino IDE 中安装库文件(项目 --> 加载库 --> 添加 .zip 库)即可。 安装完毕之后,打开 文件 --> 示例 --> 第三方库示例 找到 Adafruit_NeoPixel 的示例代码(如下图所示)。点击“上传”按钮后,即可查看效果,从示例代码中可以选取代码用于自己的项目之中。 一些常用的点亮方法 变化颜色下方两种函数均可以指定灯珠的颜色,理论上有 255*255*255 种颜色,strip 为在代码一开始所定义(如上图),如: strip.Color(255, 0, 0); //红 strip.Color(0, 255, 0); //绿 strip.Color(0, 0, 255); //蓝 strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(35536, 255, 255 * j / fadeMax)));strip.ColorHSV() 函数可以填 1 个参数或者 3 个参数。这里使用了 3 个参数的风格,前两个为色调、色相(0 to 65535),最后一个为明度 (0 to 255) ,第二个数值为饱和度常量 255 。 HSV 表达彩色图像的方式由三个部分组成: Hue(色调、色相)Saturation(饱和度、色彩纯净度)Value(明度)淡进淡出使用一个 for 循环,使灯的亮度逐渐增大;再使用一个相反的for循环,可以使灯珠的亮度逐渐减小。为了使得每个灯珠均达到此类效果,此处在 for 循环中再嵌入一个 for 循环,从而可以使得淡入淡出效果应用于整条灯带。 //淡进淡出 int fadeVal = 0, fadeMax = 100; for (int j = 0; j < fadeMax; j++ ) { for (int i = 0; i < NUMPIXELS; i++) { // 给每个灯珠赋予颜色 strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(35536, 255, 255 * j / fadeMax))); strip.show(); // 发送至灯珠,显示颜色。 } } for (int j = 100; j > fadeVal; j-- ) { for (int i = 0; i < NUMPIXELS; i++) { strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(35536, 255, 255 * j / fadeMax))); strip.show(); } } 顺序点亮顺序点亮的过程比较简单,通过 for 循环即可实现;在此处通过 delay() 函数来控制顺序点亮的间隔时间,delay 数值越小则点亮的速度越快。 for (int i = 0; i < NUMPIXELS; i++) { strip.setPixelColor(i, strip.Color(255, 0, 0)); strip.show(); delay(DELAYVAL); //间隔时间 } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |