Выражается вот в чём:
Первый проект 16х17 (272 пикселя) прекрасно работал, 31х33 (1023 пикселя) воспроизводил только первый, статичный кадр, путем проб было выявлено, что максимум , который способен ,вывозить, nodemcu 512 пикселей, больше - воспроизводит только первый кадр анимации, хотя компилируется проект замечательно, без ошибок, но в железе не работает. На некоторых форумах нашел коллег по несчастью, которым так же не удалось заставить работать более 512 штук ws2812
#include <FastLED.h>
#include <SPI.h>
#include <SD.h>
#define NUM_LEDS 272 // LED number
#define DATA_PIN D1 // your data arduino pin
#define CHIPSET WS2812B // your LED chip type
#define COLOR_ORDER GRB
#define BRIGHTNESS 50
int count_files = 20; // Количество файлов
File fxdata;
CRGB leds[NUM_LEDS];
int val;
void setup()
{
FastLED.addLeds<CHIPSET, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
FastLED.setBrightness(BRIGHTNESS);
for(int y = 0 ; y < NUM_LEDS ; y++)
{
leds[y] = CRGB::Black; // set all leds to black during setup
}
FastLED.show();
pinMode(10, OUTPUT); // CS/SS pin as output for SD library to work.
digitalWrite(10, HIGH); // workaround for sdcard failed error...
if (!SD.begin(4))
{
Serial.println("sdcard initialization failed!");
return;
}
Serial.println("sdcard initialization done.");
// test file open
fxdata = SD.open("1.out"); // read only
if (fxdata)
{
Serial.println("file open ok");
fxdata.close();
}
}
void loop()
{
for(val = 1; val <= count_files; val++)
{
fxdata = SD.open(String(val)+".out"); // read only
if (fxdata)
{
Serial.println("file open ok");
}
while (fxdata.available())
{
Sortled();
FastLED.show();
delay(50); // set the speed of the animation. 20 is appx ~ 500k bauds
}
// close the file in order to prevent hanging IO or similar throughout time
fxdata.close();
}
}
int Sortled () {
CRGB templeds[NUM_LEDS];
const uint32_t XYTable[] = {
255, 254, 221, 220, 187, 186, 153, 152, 119, 118, 85, 84, 51, 50, 17, 16,
256, 253, 222, 219, 188, 185, 154, 151, 120, 117, 86, 83, 52, 49, 18, 15,
257, 252, 223, 218, 189, 184, 155, 150, 121, 116, 87, 82, 53, 48, 19, 14,
258, 251, 224, 217, 190, 183, 156, 149, 122, 115, 88, 81, 54, 47, 20, 13,
259, 250, 225, 216, 191, 182, 157, 148, 123, 114, 89, 80, 55, 46, 21, 12,
260, 249, 226, 215, 192, 181, 158, 147, 124, 113, 90, 79, 56, 45, 22, 11,
261, 248, 227, 214, 193, 180, 159, 146, 125, 112, 91, 78, 57, 44, 23, 10,
262, 247, 228, 213, 194, 179, 160, 145, 126, 111, 92, 77, 58, 43, 24, 9,
263, 246, 229, 212, 195, 178, 161, 144, 127, 110, 93, 76, 59, 42, 25, 8,
264, 245, 230, 211, 196, 177, 162, 143, 128, 109, 94, 75, 60, 41, 26, 7,
265, 244, 231, 210, 197, 176, 163, 142, 129, 108, 95, 74, 61, 40, 27, 6,
266, 243, 232, 209, 198, 175, 164, 141, 130, 107, 96, 73, 62, 39, 28, 5,
267, 242, 233, 208, 199, 174, 165, 140, 131, 106, 97, 72, 63, 38, 29, 4,
268, 241, 234, 207, 200, 173, 166, 139, 132, 105, 98, 71, 64, 37, 30, 3,
269, 240, 235, 206, 201, 172, 167, 138, 133, 104, 99, 70, 65, 36, 31, 2,
270, 239, 236, 205, 202, 171, 168, 137, 134, 103, 100, 69, 66, 35, 32, 1,
271, 238, 237, 204, 203, 170, 169, 136, 135, 102, 101, 68, 67, 34, 33, 0
};
fxdata.readBytes((char*)templeds, NUM_LEDS*3);
for (int k=0; k < NUM_LEDS; k++) {
leds[XYTable[k]] = templeds[k];
}
}