嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

通过增加 Adafruit Flora NeoPixel,让单调乏味的圣诞毛衣旧貌换新颜。

我非常喜欢去年的圣诞毛衣,它穿起来非常柔软舒适!遗憾的是,它有一点单调,其白灰色样式在众多时髦的圣诞毛衣中毫不显眼。考虑到如今可穿戴技术愈加受欢迎,我决定修改一下我的旧款节日毛衣,用一些吸引人的 LED 制作出专属于我的可穿戴技术。

目前市面上有许多现成的紧凑型微控制器平台,这就是说您能够轻松制作您专属的简单可穿戴设备。我决定使用 Adafruit Flora 平台,这种兼容 Arduino 的可穿戴电子平台具备一整套传感器和外围设备,还可以使用锂聚合物电池供电,非常适合可穿戴技术使用。

此外,我还决定使用 Flora smart RGB NeoPixel。它们都是智能型独立编址的 RGB LED 以及基于 WS2812、WS2811 以及 SK6812 LED/驱动器之上并使用单线控制协议的条带。它们可以连接在一起,单独寻址或按顺序寻址,而与微控制器连接时,一个 NeoPixel 的输出将直接与下一个 NeoPixel 的输入连接。

NeoPixel 受 Arduino 库的支持。起初,我不太了解 NeoPixel 的工作方式:即使它们在数据总线上以串联方式连接,我也完全不明白它们如何能够独立寻址。但在我查看了 Github repo 上关于 NeoPixelit 的 simple.ino  示例评论之后,我很快就明白了。当多个 NeoPixel 以串联方式连接在数据引脚两端时,草图中规定应为每个 NeoPixel 分配一个安装编号,这意味着,当所有 pixel 都连接至同一数据引脚时,每个 pixel 都能被独立控制。

按照 Adafruit NeoPixel Überguide 给出的详细步骤下载正确的库之后,我必须确定 NeoPixel 的行为方式。我翻阅了示例草图并找到一种会根据比色转盘的颜色淡出的方式。我觉得采用白色和蓝色(我觉得它们是冬天的颜色)看起来会非常酷,这样,NeoPixel 会从白色淡出,逐渐变为蓝色,然后再从蓝色淡出,变为白色,如此不断循环。

我知道白色是(127、127、127),蓝色是(0、0、255)。起初,我尝试按照一定的增量增大这些整数值,直到白色转变成蓝色,也就是每次从红色和绿色减去 1,然后对蓝色增加 1,就像这样:

(127, 127, 127)
(126, 126, 128)
(125, 125, 129)
(124, 124, 130)
(123, 123, 131)

等。

这种跳跃幅度有点大,颜色不能顺畅转换,而我想让颜色顺畅淡出,就如同我以前看到的示例一样。下方的这一段代码是彩虹功能控制代码的一部分。我认为,我可以使用与这段代码类似的内容来帮助 pixel 平缓淡出,而不是直接从一个颜色跳跃到下一种颜色。

void rainbow(uint8_t wait) {
   uint16_t i, j;

   for(j=0; j<256; j++) {
     for(i=0; i        strip.setPixelColor(i, Wheel((i+j) & 255));
     }
     strip.show();
     delay(wait);
   }

我决定增加一个 FOR 循环,这样,我就能让 NeoPixel 平缓地从蓝色淡出为白色。

    for(int count = 0; count <127; count ++)
       colorWipe(strip.Color(count, count, 255-count), 60);

其效果非常明显,我拥有了能从蓝色淡出变为白色的 NeoPixel,但是,在从白色淡出变为蓝色时,它不是淡出,而是直接转变为蓝色。我实在不喜欢这种变化,我非常希望这两种颜色之间能持续、平缓地转变。为此,我增加了第二个 FOR 循环,它的工作原理正好与第一个相反,可以帮助 NeoPixel 从白色淡出,重新变成蓝色。

void loop() {
    for(int count = 0; count <127; count ++)
       colorWipe(strip.Color(count, count, 255-count), 60);
    for(int count = 0; count <127; count ++)
       colorWipe(strip.Color(127-count, 127-count, 127+count), 60);
}

受视频拍摄灯光影响,我们很难察觉色彩的变化。

由于草图对一组三个的 NeoPixel 起作用,我觉得是时候开始缝纫了。在我实际开始缝上任何元件之前,我首先需要确定它们的缝纫位置。我觉得将 NeoPixel 装点在毛衣雪花图案的中央看起来相当漂亮,这样,雪花看起来就像在闪光。我非常喜欢这个创意,它给毛衣增加了新的色彩,让它看上去更加炫酷。特别强调一下,一共需要使用 7 个 NeoPixel。

开始缝纫之前,我排定了缝纫 NeoPixel 的顺序,确定最先缝上哪个 NeoPixel,并在脑海里将这个顺序回顾了一遍,以免出现任何线路短路。我从位置最远的 NeoPixel 开始缝纫,缝到最靠近的位置,将所有数据引脚都缝合在一起。使用导电线缝纫的感觉和常规缝纫相当不同,导电线本身更粗,也更难以使用。您得像处理裸线那样处理导电线,您无法让线路交叉同时又不引起短路。

将所有数据线连接起来之后,我开始缝纫来自 Flora 的 GND 和 VCC,还是需要确保不会太过靠近数据缝纫线。每次需要对导电线打结时,我都会涂上透明指甲油让结打得更牢固,以防其松开。

 

因为我决定将元件都缝在毛衣的里面,所以我需要盖住 Flora。我做了一个小袋,将它位于 Flora 的上面,然后在底部用 Velcro 固定以制作一个口袋盖。在某些要固定固定锂聚合物电池并仍要能够接近 flora 的地方也采用这种方法。

为了完成这件毛衣,我使用微型 USB 将 Flora 与我的笔记本电脑连接起来,然后利用 Arduino IDE 将草图上传上去。这样,我的 NeoPixel 圣诞毛衣就完成了。虽然有些不太稳定,但这是我首次完成可穿戴项目,我自己感觉它看起来非常不错!

我对这个项目感到最满意的地方在于,我不需要坚持采用颜色逐渐淡出的蓝色和白色 LED,我能让它们发挥各种功能。遇到不同场合,我只需要更改几行代码,就能改变 NeoPixel 的颜色,我还能让它们闪烁。

Trainee Electronics Engineer, currently studying towards my degree in Electronic Engineering at the University of Hudderfsield. Completed my HND in Electrical & Electronic Engineering from Bradford College 2017. Love to try new things and build interesting projects!