问题标签 [fastled]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
376 浏览

arduino - 在 Arduino 上使用 433Mhz 无法多次接收数据

我目前正在使用 Arduinos 和 WS2812b LED 条为我的公寓建造一些照明设备。我的计划是使用智能手机上的应用程序和 Raspberry Pi 来控制它们。手机向 Pi 发送数据(如颜色、模式等),然后 Pi 通过 433MHz 发射器将数据传输到我想放置在房间内的三个 Arduino Nano。

通过 Pi 从我的手机向 Arduinos 发送数据没有问题,数据被正确接收并且 LED 亮起,但是一旦我这样做,就无法接收到更多数据。当我只是收到并且不做任何其他事情时没有问题。

这是我的代码:

(我几乎把这段代码撕成碎片,这就是剩下的。)

这些是发射器/接收器,我使用RC-SwitchAdafruit NeoPixel作为库,但其他 LED 库(FastLEDlight_ws2812)也有相同的错误。

到目前为止,我发现它可以使用少于 5 个 LED,如果我将颜色设置为低值,有时可以使用更多。那么我是否获得另一个接收或多或少的机会。如果我不在这里设置 LED

我可以接收更多数据,如果我硬编码颜色的值,它仅适用于亮白色(因此每种颜色为 255)或颜色值低于 14。

如果我注释掉 setup() 中的最后四行,则问题甚至无法通过重新启动按钮来解决(尽管拔掉电源会有所帮助)。切换接收器也不起作用。

我使用的所有三个 Arduino 都有相同的问题。我使用 6A 电源(至少对于带有 75 个 LED 的灯条,另外两个有 30 个 LED,每个 LED 的电源为 2.4A)所以电源应该没有问题。

当我将我的 Arduino Uno 连接到接收器的第二个数据引脚时,它也无法接收到任何东西,将 Uno 与旁边的另一个接收器一起使用就可以了。使用 Uno 作为示波器并在数据引脚上显示电压,我在第一次传输后注意到很多噪声。看起来它随着颜色值的增加而增加。在我使用 setup() 中的 LED 设置重新启动 Arduino 后,噪音就消失了,如果我根本不对 LED 做任何事情,它就不会发生。接收器模块上的数据和 GND 之间有一个 5 MOhm 下拉电阻。我实际上不知道这种噪音是否与此有关,因为即使有噪音,接收有时也很好。

我尝试在设置 LED 之前禁用接收引脚并在之后启用它,但这没有帮助。手动启用中断也不会做任何事情。我更改了 rc-switch 中断处理,因此每次发生中断时它都会打印一些内容。即使在收到第一个数据后也能正常工作,但 Arduino 不知何故无法识别发送的内容。

我真的很想知道除了切换到 WiFi 模块或实际电线之外,是否有什么我可以尝试解决的问题。

0 投票
1 回答
479 浏览

arduino - 为什么 Adafruit 而不是 fastLED 与 WS2812 LED 灯条和 Arduino Nano 一起使用?

我正在使用 Adafruit_NeoPixel 库和 Arduino Nano 来点亮我的 WS2812 RGB LED 灯条。

现在我不得不切换到 fastLED 库,因为我喜欢一个很棒的程序,但奇怪的是,使用任何演示,我的 LED 仍然是黑色的。使用 Adafruit_NeoPixel,它们可以完美运行。

有人知道这个问题吗?是硬件问题吗?通常我只需要输入 PIN 和 NUMPIXELS,其余的由演示完成。

0 投票
1 回答
653 浏览

arduino - FastLED 和简单计数器的问题

好的,我对这段代码有一个莫名其妙的问题。计数器pushCounterz(以 az 命名只是为了排除冲突的变量)将以正确的计数器(1 或 0 或任何一个)开始,并且在按下按钮时会发生以下几种情况之一:

  1. 什么也没做
  2. 正确切换 LED,但计数器以 2 种方式中的 1 种方式发生故障
    1. 计数器将跳转到 -255,然后在第二次按下时重置为 1,并且每次按下时都会在 1 和 -255 之间翻转
    2. 计数器不会增加
    3. 计数器和/或 LED 将随机增加而无需接触任何东西。

但是,如果我禁用 switch 代码块,一切都会完美无缺。我怀疑这是 FastLED 库中的一个错误,但是我想在这里问一下,因为我对 Arduino 编程很陌生。

编辑:上面的代码修复了按钮的一个问题。我已将电路更改为 HIGH 并降至 LOW,但没有更改代码。然而,状态仍然不一致,有时工作,有时在 1 和 -255 之间翻转(更多的是后者)。变更摘要:

编辑:串行输出显示上述编辑后的当前疯狂(带注释):

0 投票
1 回答
562 浏览

c++ - FastLED,如何在运行时更改 LED 的数量(NUM_LEDS)?

是否可以在运行时更改 LED 的数量(Arduino/FastLED)?我怎样才能做到这一点?

一个小的示例代码会很好,因为我是新手:)

谢谢!

0 投票
3 回答
1862 浏览

arduino - Arduino 在使用 FastLED 时忽略串行中断

我尝试了在互联网上找到的几种不同的方法,但它们似乎都不起作用。此代码适用于案例 0-2,但当它进入彩虹追逐循环的案例 3 时,按下按钮不会中断循环并向前移动计数器。我假设,像往常一样,我错过了一些愚蠢的东西,非常感谢。

0 投票
2 回答
429 浏览

c++ - 创建头文件并使用 FastLED 库中的 CRGB LED 阵列时出错

我正在开发带有可寻址 LED 的 Arduino 项目,并且正在使用 FastLED.h 库。

为了简化我的程序,我想创建一个名为 LedsHorloge.h 的库,我将从该库中调用该函数Jauge(int tour, int numberLeds, int brightness, CRGB* ledTable)来点亮我的 LED 灯条。

我是 C++ 的新手。

在 Arduino IDE 中,这是我得到的错误:

当我在 Arduino IDE 中运行此代码时会发生此错误:

这是我的标题 LedsHorloge.h

这是我的名为 LedsHorloge.cpp 的源代码

我不知道如何在 object 上创建一个指针CRGB leds[NUMBER_LEDS];

0 投票
4 回答
580 浏览

c++ - 这个for循环可以用预处理器完成吗?

我的代码使用了一个使用模板函数的库(FastLED):

我不能把它放在一个正常的 for 循环中,因为模板参数需要在编译时是可计算的。我可以在预处理器中执行此操作吗?还有什么建议吗?我希望能够方便地更改 NUM_WIDGETS 而无需复制粘贴这些行。

0 投票
2 回答
111 浏览

arduino - Controling above 512 LED's with arduino and FASTLED

I am making an LED board that will have approximately 900 individually addressable LED's (WS2812B)

From my experiments, I think I can't safely control about 512 LED's before I start to exhaust an Arduino UNO's modest memory and getting strange behavior.

The most obvious solution to me would be to use an Arduino Mega, but its physical size is not really suitable for my project.

Is it possible to link multiple Arduino units together and use them to control a larger amount of lights and synch them together to act as one? I have read about IC2 but I cannot find any examples of anyone using it in conjunction with FASTLED, so my feeling is it probably doesn't do what I think.

Can anyone point me towards the solution to this problem?

0 投票
2 回答
533 浏览

arduino - 如何使用串行作为其他功能的中断

我正在制作一个 LED 控制程序(当然是使用 FastLED)并使用串行(带有串行监视器)来控制它。只需通过 USB 连接,大多数情况下都可以正常工作。然而,我注意到长时间闪烁的程序让我无法阻止它们并让 LED 做其他事情。我的代码中的 flash 例程非常简单:

作为fillLeds(r,g,b)一个for循环,循环并将所有LED设置为某种颜色,并且milliDelay只是delay()使用millis而不是delay()功能。我需要的是不仅能够暂停这个,还能够暂停其他功能(可能使用break;),然后执行其他代码。看起来很容易对吧?好吧,我注意到当我通过串行发送一个字节时,如果你愿意的话,它会进入这个“队列”,然后被顺序读取。我不能让这种事情发生。我需要的是输入 Serial 的下一个字节来激活某种事件,该事件会暂停其他flash()功能的运行,然后再使用。我实现这个的方式是这样的:

wherehandleRequest(x);只是一个很长的 switch 语句,其中调用了 flash 方法,使用了不同的颜色等。

每当收到新字节时,如何让 Arduino 暂停其他循环,而不是将其添加到此“队列”中以便稍后执行?如果这是不可能的,无论如何感谢您的阅读。我试过使用serialEvent()which 似乎不起作用。

0 投票
1 回答
465 浏览

arduino - Arduino FastLed 随机行为

我正在尝试在一些 WS2811 LED 灯条上使用 FastLed,但我得到了一个奇怪的行为。我正在使用一个简单的代码来调试问题,但仍然无法正常工作。一些 LED 是红色的,但大多数是蓝色的。我尝试了 FastLed Blink 示例中可用的所有不同 LED 灯条类型,但没有太大区别。

灯带

LED灯带图片

LED 由外部 12v 电源供电 ( https://www.amazon.com/gp/product/B00D7CWSCG )。

Arduino 由我的 PC 上的 USB 电缆供电。

我试过用 Arduino Mega 和 Arduino Nano 没有区别。 示意图

(没有正确的 LED 灯条,我有一个 WS2811,但它是我找到的最接近的)

知道可能是什么问题吗?谢谢