Что за подключение (китайская гирлянда-штора)?

Dimas2013

✩✩✩✩✩✩✩
17 Авг 2020
53
3
@imhateb, Я в ней поменял только ширину. Она 20 вверх на 20 в сторону , я установил 40 в сторону и все. Но прошивка у меня Fiery Led Lamp v5.0 . На других не пробовал
 

imhateb

✩✩✩✩✩✩✩
19 Апр 2020
14
3
@Dimas2013, блин. Ну мне этот хак не помог к сожалению. Всё равно работает только первая вертикальная полоса.
Спасибо за ответ.

Может есть ещё какие идеи, почему оно так себя ведёт, и как сделать, чтобы оно работало норм?
 

Dimas2013

✩✩✩✩✩✩✩
17 Авг 2020
53
3
@imhateb, если только пробовать разные прошивки,я даже не знаю. Я с первого разу как установил ту прошивку, у меня светились полшторы, попробовал изменить на 40 все пошло, так и оставил. Попробуй перепрошить на Fiery Led Lamp v5.0 может поможет.
 

imhateb

✩✩✩✩✩✩✩
19 Апр 2020
14
3
@Сотнег, не, с родным контроллером работает нормально. Светятся все отрезки ленты как единая матрица.

Попробуй перепрошить на Fiery Led Lamp v5.0 может поможет.
Спасибо за совет. К сожалению он ни к чему не привёл. Прошил, как Вы и советовали Fiery Led Lamp v5.0, - результат такой же - светится только первая вертикальная полоса. Ну и в целом прошивка Fiery Led Lamp v5.0 показалась менее подходящим решением под мою задачу. Для меня принципиально важным является функционал, который присутствует в прошивке LedPanelWiFi_v1.14, а именно - возможность задавать собственный список анимаций, которые сменяют друг друга, а так же возможность загружать собственные анимации с SD-карты. Ну в любом случае, обе прошивки пока показывают одинаково отрицательный результат с этой лентой-шторой.

Неужели нельзя как-то решить эту задачу без раскурочивания крючков и и перепаивания всех этих отрезков в змейку (или параллельно)? Просто если честно, этот вариант крайне нежелателен. Штора эта запечатана внутри "бесконечного куба". Только не куба, а нескольких трапециевидных фиговин. В общем не суть. Запечатана кароче. Смысл в том, что расковыривать это всё прям сильно не хочется.

Может есть что-то, что можно было бы просто поправить в прошивке, и чтобы сразу стало хорошо? 😇
 

Сотнег

★★★★★★★
15 Янв 2020
4,557
1,546
@imhateb, попробуйте доя проверки взять какой-нибудь наиболее простой скетч для светодиодной ленты,
что-то типа последовательного зажигания светодиодов один за другим,
и число (количество) светодиодов в ленте укажите максимально большое (4000 или больше).

Возможно, адресация светодиодов в устройстве испорчена как-то.
 

AnCore

★★✩✩✩✩✩
27 Янв 2020
298
82
@imhateb, а если в LedPanelWiFi использовать карту индексов, составленную в LedMapper (программа есть в архиве с проектом LedPanelWiFi), будет ли толк?
 

Вложения

imhateb

✩✩✩✩✩✩✩
19 Апр 2020
14
3
@Сотнег, спасибо за совет.
Попробовал самописный скетч для последовательного зажигания светодиодов - результат тот же - загораются только диоды из первого вертикального отрезка. И дальше долгая пауза - как будто он зажигает все остальные, но на самом деле нет. (((

Попробовал сделать скетч, с разными вариантами адресации, чтобы определить как именно работают эти контроллеры в Т-образных соединениях. Зажигал ленту разными цветами для каждого варианта, в надежде, что один из них сработает и я пойму как там всё устроенно. Типа:
  1. Красный - простая последовательная нумерация 0-399
  2. Зеленый - блочная адресация (каждая полоса = блок из 20)
  3. Синий - адресация с пропусками (контроллеры занимают адреса)
  4. Желтый - зигзаг адресация
  5. Пурпурный - обратная адресация
  6. Голубой - адресация по рядам (горизонтальная)
  7. Белый - расширенная адресация с учетом контроллеров

C++:
// Тест 1: Простая последовательная адресация
void testSequential() {
  strip.clear();
  for(int i = 0; i < TOTAL_LEDS; i++) {
    strip.setPixelColor(i, strip.Color(255, 0, 0)); // Красный
  }
  strip.show();
  delay(TEST_DELAY);
  strip.clear();
  strip.show();
  delay(1000);
}

// Тест 2: Блочная адресация
void testBlockAddressing() {
  strip.clear();
  for(int column = 0; column < MATRIX_WIDTH; column++) {
    for(int row = 0; row < MATRIX_HEIGHT; row++) {
      int address = column * MATRIX_HEIGHT + row;
      if(address < TOTAL_LEDS) {
        strip.setPixelColor(address, strip.Color(0, 255, 0)); // Зеленый
      }
    }
  }
  strip.show();
  delay(TEST_DELAY);
  strip.clear();
  strip.show();
  delay(1000);
}

// Тест 3: Адресация с пропусками (контроллеры могут занимать адреса)
void testWithGaps() {
  strip.clear();
  for(int column = 0; column < MATRIX_WIDTH; column++) {
    for(int row = 0; row < MATRIX_HEIGHT; row++) {
      // Пропускаем один адрес на каждый контроллер
      int address = column * (MATRIX_HEIGHT + 1) + row;
      if(address < TOTAL_LEDS) {
        strip.setPixelColor(address, strip.Color(0, 0, 255)); // Синий
      }
    }
  }
  strip.show();
  delay(TEST_DELAY);
  strip.clear();
  strip.show();
  delay(1000);
}

// Тест 4: Зигзаг адресация
void testZigzag() {
  strip.clear();
  int address = 0;
  for(int column = 0; column < MATRIX_WIDTH; column++) {
    if(column % 2 == 0) {
      // Четные столбцы - сверху вниз
      for(int row = 0; row < MATRIX_HEIGHT; row++) {
        if(address < TOTAL_LEDS) {
          strip.setPixelColor(address, strip.Color(255, 255, 0)); // Желтый
          address++;
        }
      }
    } else {
      // Нечетные столбцы - снизу вверх
      for(int row = MATRIX_HEIGHT - 1; row >= 0; row--) {
        if(address < TOTAL_LEDS) {
          strip.setPixelColor(address, strip.Color(255, 255, 0)); // Желтый
          address++;
        }
      }
    }
  }
  strip.show();
  delay(TEST_DELAY);
  strip.clear();
  strip.show();
  delay(1000);
}

// Тест 5: Обратная адресация
void testReverse() {
  strip.clear();
  for(int i = 0; i < TOTAL_LEDS; i++) {
    int reverseAddress = TOTAL_LEDS - 1 - i;
    strip.setPixelColor(reverseAddress, strip.Color(255, 0, 255)); // Пурпурный
  }
  strip.show();
  delay(TEST_DELAY);
  strip.clear();
  strip.show();
  delay(1000);
}

// Тест 6: Адресация по столбцам (сначала все первые светодиоды, потом все вторые...)
void testColumnFirst() {
  strip.clear();
  int address = 0;
  for(int row = 0; row < MATRIX_HEIGHT; row++) {
    for(int column = 0; column < MATRIX_WIDTH; column++) {
      if(address < TOTAL_LEDS) {
        strip.setPixelColor(address, strip.Color(0, 255, 255)); // Голубой
        address++;
      }
    }
  }
  strip.show();
  delay(TEST_DELAY);
  strip.clear();
  strip.show();
  delay(1000);
}

// Тест 7: Расширенная адресация (возможно нужно больше адресов для контроллеров)
void testExtended() {
  strip.clear();
  // Пробуем адресацию с учетом того, что контроллеры могут занимать дополнительные адреса
  for(int column = 0; column < MATRIX_WIDTH; column++) {
    for(int row = 0; row < MATRIX_HEIGHT; row++) {
      // Каждый контроллер добавляет один дополнительный адрес
      int address = column * (MATRIX_HEIGHT + 1) + row + 1; // +1 для контроллера
      if(address < TOTAL_LEDS) {
        strip.setPixelColor(address, strip.Color(255, 255, 255)); // Белый
      }
    }
  }

Но чёт ничего из этого не сработало. Ну т.е. опять в каждом варианте светился только первый вертикальный столбец... Я уже хз чё делать. Есть мысли? Про резать-перепаивать знаю. Это не интересно. Хочется тут до истины докопаться.
 

Сотнег

★★★★★★★
15 Янв 2020
4,557
1,546
@imhateb,
вы неправильно поняли, что такое "strip".
Это не лента и не матрица.
Это массив (последовательность байтов) в памяти платы.
Отправкой данных из этого массива к светодиодам занимаются функции совсем на другом уровне (в библиотеках).

Короче, ваш код каждый раз делал одно и то же в итоге.

Гирлянда, судя по вашему описанию проблем, работает по собственному протоколу, и с протоколом обычной ленты несовместима.
 

imhateb

✩✩✩✩✩✩✩
19 Апр 2020
14
3
@Сотнег, да я вообще в С++ не силён. Код для этого тестового скетча написал Claude 4 🤷‍♂️. И с прошивкой МК я в первый раз в жизни сталкиваюсь.
Отправкой данных из этого массива к светодиодам занимаются функции совсем на другом уровне (в библиотеках).
Ну так на первый столбец данные же вроде корректно отправляются. Первый столбец на любой прошивке смотрится великолепно и работает чётко ))). Надо понять только как данные дальше через этот Т-образный коннектор передать. И как это понять я и пытаюсь разобраться. Мучая параллельно и вас и нейронки.
Пока что китайская занавеска выигрывает нас всех.


@imhateb, а если в LedPanelWiFi использовать карту индексов, составленную в LedMapper (программа есть в архиве с проектом LedPanelWiFi), будет ли толк?
Спасибо за совет, но к сожалению, результат аналогичный. Пробовал и как у Вас на скриншоте одним большим сегментом на 400 диодов и 20ю отдельными вертикальными сегментами. Дальше первой полоски не светит.
 

imhateb

✩✩✩✩✩✩✩
19 Апр 2020
14
3
Кароче, народ, я сдался 😞. Задолбался искать элегантное решение. Разобрал все и перепаял... Убрал к чертям эти Т-образные коннекторы, и соединил все отрезки ленты последовательно. Всё заработало шикарно.

Вопрос есть немного не по теме, но может подскажете. После подключения питания к контроллеру, он очень долго думает, перед тем как начать работать. Ну типа минут пять-семь проходит до того момента как он включит диоды и запустит вай-фай точку. Это типа так и должно быть так долго? Или это у меня опять что-то не так?
Простите за офтопик
 

imhateb

✩✩✩✩✩✩✩
19 Апр 2020
14
3
@Сотнег, да вот ровно вот так как на этом рисунке:
1748596157340.png
Я затупил, не "последовательно" а "параллельно" (вчера уже в 5 утра сообщение писал - не соображал особо).
Хотя я думаю, что и "зигзагом" оно бы заработало. У меня просто отрезки эти были приклеены уже и менять направление каждого отрезка было более проблематично, чем протянуть средний провод наверх.

IMG_20250530_121620.jpg
Вот кароч, как я соедини всё. Зелёный провод (средняя жила) идёт змейкой, от низа первого отрезка к верху следующего.

А вот это уже мусор:
IMG_20250530_121339_1.jpg
 
  • Лойс +1
Реакции: AnCore и Сотнег

Dimas2013

✩✩✩✩✩✩✩
17 Авг 2020
53
3
@imhateb,ясно ,у меня в крючках другие,без микросхем .