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

时间:2017-12-29 04:27:10

标签: arduino arduino-uno

我目前正在使用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设置为相同的颜色似乎并不合适。

1 个答案:

答案 0 :(得分: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();
}