FastLED:如何在不使用阵列的情况下将整个条带设置为一种颜色?

问题描述 投票:0回答:1

我目前正在使用Arduino Uno。我遇到了RAM耗尽的问题,我设法解决了这些问题。然后这个项目的人告诉我,还有另外一条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设置为相同的颜色。

arduino arduino-uno
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();
}
© www.soinside.com 2019 - 2024. All rights reserved.