0

我目前正在使用 Arduino Uno。我遇到了内存不足的问题,我设法修复了它们。然后这个项目的负责人让我知道还有另一条 150 个 LED 灯条,它们都是一种颜色。

这不是问题,但我知道在 FastLED 中设置 LED 颜色的唯一方法是提供一个颜色数组,其中每个索引代表一个 LED。

在这种情况下,这是 450 字节的数据,大约是 Arduino Unos ram 的 25%,完全专用于 3 字节的数据:一种颜色。

现在,这除了是可恶的资源浪费外,也是我根本无法承受的。

有人知道如何在不制作阵列的情况下将 150 个 LED 设置为相同的颜色吗?

到目前为止我尝试过的: 我尝试过浏览 FastLED 的源代码,发现它CFastLED::addLeds创建了一个CLEDController稍后CLEDController::show()调用的函数,然后调用了“showPixels()”,这是一个被每个不同解抽象的虚拟函数条协议类的类型,并且总是需要一个 LED[] 数组。据我所知,在执行此操作之前,我必须深入研究每个不同的协议类,此时我不妨删除 FastLED 并从头开始编写我自己的版本。

在我的场景中,链的底部似乎是这样的: https ://github.com/FastLED/FastLED/blob/03d12093a92ee2b64fabb03412aa0c3e4f6384dd/platforms/arm/k20/octows2811_controller.h#L40

在 FastLED 中,似乎真的没有合适的方法将整条 LED 设置为相同的颜色。

4

1 回答 1

0

如果您只想包含整个数组,那么使用 Adafruit NeoPixel 库会更明智。

#include "Adafruit_NeoPixel.h"
#define LED_COUNT 14
#define LED_PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
strip.begin();
}
void loop()
{
for (int i = 0; i < LED_COUNT; i++)
{
strip.setPixelColor(i, strip.Color(255, 147, 41));
}
strip.show();
}
于 2019-04-30T18:52:51.263 回答