Гирлянда на ESP8266

ESP8266 не правильно воспроизводит файлы эффектов с прог.Jinx

Блоки с разделением на ESP32/ESP8266 а так же совместные
Ответить
LEKAPAB
Рядовой
Сообщения: 1
Зарегистрирован: 19.08.2023{, 17:14}
Репутация: 0
Имя: Алексей

Гирлянда на ESP8266

#1

Сообщение LEKAPAB » 19.08.2023{, 17:49}

Доброго Вам всем дня. Собираю гирлянду на окно, использую плату NodeMCU ESP8266 V3 CH340G, светодиоды WS2812B, также использую вот этот скетч. У меня возникла проблема в том что я создав файл эффектов в прог. Jinx. Загружаю его в модуль на матрице выскакивает какой то хаос , нарисовал в Jinx не подвижную полосу, но по матрице плывет какая то зиг заг сетка, хотя эффект создан не подвижная полоса. До этого я использовал этот же модуль, но c SD картой все работало, все эффекты воспроизводились на матрице нормально без косяков, узнав что у модуля достаточно своей памяти решил отказаться от SD карты и приобрел этот гемор. Скетч был написан для матрицы 10Х10 светодиодов, я добавил светодиодов 19Х17 своей матрицы. Может подскажете где можно по рытся ткните носом, я не спец в программировании, но постараюсь разобраться. Главный вопрос, как избавится от зиг заг сетки и откуда она берется?

Код: Выделить всё

#include <FS.h>
#include <FastLED.h>
#include <SPI.h>

#define NUM_LEDS 322
// LED number

File fxdata;
CRGB leds[NUM_LEDS];

int led_speed = 60;
int led_brigh = 50;

void setup()
{
  Serial.begin(115200);
  FastLED.setBrightness(led_brigh);
  FastLED.addLeds<WS2812B/*CHIPSET*/, 4/*LED_PIN*/, GRB>(leds, NUM_LEDS); //see doc for different LED strips
  for (int y = 0 ; y < NUM_LEDS ; y++)
  {
    leds[y] = CRGB::Black; // set all leds to black during setup
  }
  FastLED.show();
  //delay(1000);
  //SPIFFS.begin();
  //SPIFFS.format(); //форматирование файловой системы
  //SPIFFS.end();
}

void loop() {
  SPIFFS.begin();
  Dir dir = SPIFFS.openDir("/files");
  while (dir.next())
  {
    Serial.println(dir.fileName());
    fxdata = SPIFFS.open(dir.fileName(), "r");
    if (fxdata)
    {
      Serial.println("file open ok");
    }
    while (fxdata.available())
    {
      Sortled();
      fxdata.readBytes((char*)leds, NUM_LEDS * 3);
      FastLED.setBrightness(led_brigh);
      FastLED.show();
      delay(10000/ led_speed);
    }
    fxdata.close();
  }
  SPIFFS.end();
}

int Sortled ()
{
  CRGB templeds[NUM_LEDS];
  const uint8_t XYTable[] =
  {
    16,  17,  50,  51,  84,  85, 118, 119, 152, 153, 186, 187, 220, 221, 254, 255, 288, 289, 322,
    15,  18,  49,  52,  83,  86, 117, 120, 151, 154, 185, 188, 219, 222, 253, 256, 287, 290, 321,
    14,  19,  48,  53,  82,  87, 116, 121, 150, 155, 184, 189, 218, 223, 252, 257, 286, 291, 320,
    13,  20,  47,  54,  81,  88, 115, 122, 149, 156, 183, 190, 217, 224, 251, 258, 285, 292, 319,
    12,  21,  46,  55,  80,  89, 114, 123, 148, 157, 182, 191, 216, 225, 250, 259, 284, 293, 318,
    11,  22,  45,  56,  79,  90, 113, 124, 147, 158, 181, 192, 215, 226, 249, 260, 283, 294, 317,
    10,  23,  44,  57,  78,  91, 112, 125, 146, 159, 180, 193, 214, 227, 248, 261, 282, 295, 316,
     9,  24,  43,  58,  77,  92, 111, 126, 145, 160, 179, 194, 213, 228, 247, 262, 281, 296, 315,
     8,  25,  42,  59,  76,  93, 110, 127, 144, 161, 178, 195, 212, 229, 246, 263, 280, 297, 314,
     7,  26,  41,  60,  75,  94, 109, 128, 143, 162, 177, 196, 211, 230, 245, 264, 279, 298, 313,
     6,  27,  40,  61,  74,  95, 108, 129, 142, 163, 176, 197, 210, 231, 244, 265, 278, 299, 312,
     5,  28,  39,  62,  73,  96, 107, 130, 141, 164, 175, 198, 209, 232, 243, 266, 277, 300, 311,
     4,  29,  38,  63,  72,  97, 106, 131, 140, 165, 174, 199, 208, 233, 242, 267, 276, 301, 310,
     3,  30,  37,  64,  71,  98, 105, 132, 139, 166, 173, 200, 207, 234, 241, 268, 275, 302, 309,
     2,  31,  36,  65,  70,  99, 104, 133, 138, 167, 172, 201, 206, 235, 240, 269, 274, 303, 308,
     1,  32,  35,  66,  69, 100, 103, 134, 137, 168, 171, 202, 205, 236, 239, 270, 273, 304, 307,
     0,  33,  34,  67,  68, 101, 102, 135, 136, 169, 170, 203, 204, 237, 238, 271, 272, 305, 306,
  };


  fxdata.readBytes((char*)templeds, NUM_LEDS * 3);
  for (int k = 0; k < NUM_LEDS; k++)
  {
    leds[XYTable[k]] = templeds[k];
  }
}

aidar_i
Полковник
Сообщения: 3130
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 677
Откуда: Уфа
Имя: Айдар
Контактная информация:

Гирлянда на ESP8266

#2

Сообщение aidar_i » 19.08.2023{, 20:17}

Эту тему не смотрели?
viewtopic.php?t=5331#p70875
Там есть и работа с файловой системой.
Если Вы не программист- рекомендую.

Ответить

Вернуться в «Блоки для ESP32/ESP8266»