首页 文章

ESP8266多LED灯条控制

提问于
浏览
0

这就是我得到的 .

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

LED灯条采用WS2811芯片

我借用的代码可以工作,部分使用我制作的mod . 我将发布我更改的部分,但完整的代码在这里 . https://github.com/jasoncoon/esp8266-fastled-webserver

What it does 原始代码连接到wifi当您将单独的浏览器指向其IP时上传控制页面使用您的输入更改模式/颜色

My changes 原始程序设置为一个长LED条,我测试了它以验证一切正常 . 然后我将条带切成三个部分,用于橱柜照明 . 我希望它们各自都在自己的引脚上,所以我可以控制它们之间的延迟(通过使条带看起来比它们长) .

The issue 问题是切割条带和连接后,并非所有三个条带都在一起发光 . (从我昨晚的记忆中来看)全部3个进入,只有1个工作区拔掉第3个工作区,导致1个和2个工作拔掉2个导致1工作,3个工作仍然没有工作(我认为是那个顺序) )每个条带单独工作在各自的针脚请记住原始设置与一个长条带确实工作正常 .

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

// 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中途停车,"One array, many strips"

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

1 回答

  • 1

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

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

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

相关问题