0

这就是我得到的。

ESP8266-12E(其实是NodeMcu搭建的,但是pinout和链接一样) https://acrobotic.com/acr-00018

LED灯条采用WS2811芯片

我从作品中借来的代码部分适用于我制作的模组。我只会发布我更改的部分,但完整的代码在这里。 https://github.com/jasoncoon/esp8266-fastled-webserver

的作用 原始代码连接到 wifi 当您将单独的浏览器指向它的 IP 时上传控制页面 使用您的输入更改图案/颜色

我的更改 原始程序是为一个长 LED 灯条设置的,我对其进行了测试以验证一切正常。然后我将条带切割成三个部分,用于橱柜照明。我希望它们每个都在自己的引脚上,这样我就可以控制它们之间的延迟(通过使条带看起来比它们长)。

问题 问题在于切割条带并连接后,并非所有三个条带都亮在一起。(根据我昨晚的记忆) 全部 3 条,只有条带 1 工作 拔下条带 3 导致 1 和 2 工作 拔下条带 2 导致 1 工作,但 3 仍然不起作用 拔下条带 1 导致 3 工作并且 2 仍然不起作用(我认为是那个顺序) 每个条带单独在各自的引脚上工作 请记住,带有一个长条带的原始设置确实可以正常工作。

代码更改(两边都有一点以帮助在原始代码中找到它)第一部分经过修改以考虑不同长度的不同条带

// the very next line is original, but I commented out to add data pins later
//#define DATA_PIN      8     // for Huzzah: Pins w/o special function:  #4, #5, #12, #13, #14; // #16 does not work :(
#define LED_TYPE      WS2811
#define COLOR_ORDER   BRG
#define STRIP_1       6     // seperate strips are numbered and added together to form one long chain
#define STRIP_2       67   // by adding extra leds, you add a delay so you don't jump a gap between strips too fast
#define STRIP_3       27
#define STRIP_12      STRIP_1 + STRIP_2
#define NUM_LEDS      STRIP_1 + STRIP_2 + STRIP_3

#define MILLI_AMPS         10000     // IMPORTANT: set here the max milli-Amps of your power supply 5V 2A = 2000
#define FRAMES_PER_SECOND  120 // here you can control the speed. With the Access Point / Web Server the animations run a bit slower.

FastLED.addLeds 最初是一行,现在是 3。

  FastLED.addLeds<LED_TYPE, 5, COLOR_ORDER>(leds, 0, STRIP_1);         // for WS2812 (Neopixel)
  FastLED.addLeds<LED_TYPE, 6, COLOR_ORDER>(leds, STRIP_1, STRIP_2);
  FastLED.addLeds<LED_TYPE, 7, COLOR_ORDER>(leds, STRIP_12, STRIP_3);

切割 LED 灯条的原因是安装位置。Strip_1 在冰箱和炉子之间 Strip_2 在炉子和水槽之间 Strip_3 在水槽和墙壁之间

将它们分开在引脚上的原因是 FastLED 似乎没有一种简单的方法来更新模式。使用当前的设置,我知道它至少可以部分工作,而无需修改程序中已经存在的 8 个左右的模式。在 Strip_3 断开连接的情况下,条 1 和条 2 作为一条连续的条来回摆动。为了在不改变模式的情况下增加延迟,我只是告诉它 Strip_1 更长。这给人的印象是,一束光穿过火炉和水槽,看不见,又在下一条带上再次看到。

这是我用于此设置的示例。 https://github.com/FastLED/FastLED/wiki/Multiple-Controller-Examples 中途,“一个阵列,许多条”

免责声明:我是一名机械工程师,当我们进行所需的小编程时,我在学校没有专心(事后看来,这很糟糕)。无论如何,我花了一周半的时间阅读 C++ 教程和示例,才走到了这一步。写作会很糟糕,但至少我知道现在 1/2 的程序在做什么。

4

1 回答 1

1

尝试在 Strip_1 中运行没有额外长度的代码:

为了在不改变模式的情况下增加延迟,我只是告诉它 Strip_1 更长。这给人的印象是一束光穿过炉子和水槽,看不见,又在下一条带上再次看到。

通过尝试访问 Neopixel 灯带中不存在的像素,您可能会遇到 LED 灯带的索引问题。如果这确实是问题,请实施适当的延迟技术。

于 2017-08-17T19:46:22.000 回答