• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Гирлянда на NodeMCU ESP8266 V3 CH340G + Jinx

OLD

New member
Доброго всем дня Собираю гирлянду на окно, использую плату NodeMCU ESP8266 V3 CH340G, светодиоды WS2812B, также использую вот этот скетч. У меня возникла проблема в том что я создав файл эффектов в прог. Jinx. Загружаю его в модуль на матрице выскакивает какой то хаос , нарисовал не подвижную полосу, по матрице плывет какая то зиг заг сетка, хотя эффект создан не подвижная полоса. Может кто подскажет где можно по рытся ткните носом, я не спец в программировании, но постараюсь разобраться.
Код:
#include <FS.h>
#include <FastLED.h>
#include <SPI.h>

#define NUM_LEDS 322              // Количество светодиодов

File fxdata;
CRGB leds[NUM_LEDS];

int led_speed = 10;               // Скоррость анимации
int led_brigh = 20;            //  Яркость светодиода //

void setup()
{
  Serial.begin(115200);
  FastLED.setBrightness(led_brigh);       //  Яркость светодиода //
  FastLED.addLeds<WS2812B/*CHIPSET*/, 4/*LED_PIN*/, GRB>(leds, NUM_LEDS); //смотрите документацию для различных светодиодных лент
  for (int y = 0 ; y < NUM_LEDS ; y++)
  {
    leds[y] = CRGB::Black;     // установите все светодиоды на черный цвет во время настройки
  }
  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(1000/ 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];
  }
}
 

tobotobo

New member
Дорогой друг, поставь в разрыв провода по которому идет управляющий сигнал на матрицу , у тебя это вроде бы пин 4, резистор около 220 Ом, и проблема исчезнет, сам столкнулся с таким поведением.
 

OLD

New member
Спасибо за совет, но проблема уже решена. По своей не опытности я ставил число как и в масиве,
#define NUM_LEDS 322 // Количество светодиодов.
А в масиве счет начинается с нуля, изменил в коде на 323 и всё встало на свои места.
#define NUM_LEDS 323 // Количество светодиодов
 
Сверху Снизу