Arduino 制造光污染

您所在的位置:网站首页 arduino不同型号 Arduino 制造光污染

Arduino 制造光污染

2023-09-20 13:25| 来源: 网络整理| 查看: 265

本文最后更新于 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