你觉得这篇文章怎么样? 帮助我们为您提供更好的内容。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
你觉得这篇文章怎么样?
通过增加 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 的颜色,我还能让它们闪烁。