ESP8266多LED灯条控制

时间:2017-08-17 18:25:53

标签: arduino esp8266 led

这是我得到的。

ESP8266-12E(实际上由NodeMcu构建,但引脚排列与链接相同) https:// acrobotic.com/acr-00018

LED灯条使用WS2811芯片

我借用的代码可以工作,部分使用我制作的mod。我只是发布我更改的部分,但完整的代码在这里。 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 中途下来,&#34;一个阵列,多个条带&#34;

免责声明:我是一名机械工程师,当我们完成小编程工作时(事后看来很糟糕),在学校里并没有注意。无论如何,我花了最后一周半的时间通过C ++教程和示例来实现这一目标。写作会很糟糕,但至少我知道现在正在做什么的1/2节目。

1 个答案:

答案 0 :(得分:1)

尝试在Strip_1中运行代码而不需要额外的长度:

  

要在不更改模式的情况下添加延迟,我只是告诉它Strip_1更长。这给人的印象是,一串光线穿过炉子并看不见,并在下一条带上再次看到。

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