Проблема с управлением адресной лентой с радио пульта

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
7
0
Добрый день, решил сделать интерьерную подсветку с помощью библиотеки microLED повторив часть эффектов из лампы и прикрутив управление с радио пульта при помощи модуля приёмника WL101-341/331. Всё отладил на стенде с отрезком ленты в 14 светодиодов. При сборке финальной конструкции выяснилось что при увеличении количества светодиодов которые нужно контролировать сверх 34 в прошивке ардуина перестаёт реагировать на пульт. Но при этом ардуина не зависает, а управляет лентой. Эффектом по-умолчанию установлено "пламя", оно работает на длине до 100 светодиодов, но на пульт не реагирует. Если ленту физически вообще не подключать, а только запустить прошивку всё так же, до значения в 34 в переменной PINS через серийный порт видно получаемые с пульта пакеты, сверх этого значения глухо. Уменьшение глубины цвета не влияет, на недостаток памяти при загрузке ругани нет.

В чём может быть проблема?
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,741
429
Москва
я управляю 120 светодиодами и сервоприводом при помощи пульта ИК, никаких нареканий нет. С радиопультом не пробовал, но место на плате осталось для NRF , хотелось попробовать сделать синхронизацию по воздуху для 2-х отрезков.

А по вашему вопросу будут только гадания. Схемы нет, скетча нет..
 

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
7
0
Схема: D2 ардуины к data приёмника. На D6 висит управление лентой через резистор. Питание приёмника, ленты и ардуины с преобразователя 220 В -> 5 В.
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,741
429
Москва
Ну скетча нет, значит буду попытаться угадать ) Эффект LED слишком надолго забирает монопольное управление на себя, ему просто не остается времени на управление, или он его просто пропускает
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,741
429
Москва
А зачем используются 2 библиотеки для ленты одновременно ?
На 1-ый взгляд все эффекты не должны понополизировать надолго контроллер, посмотрю еще.
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,741
429
Москва
Ну скорее всего не питание, а беда с эффектом все же.
при 14 светодиодов скорость окол 50к циклов в сек
при 40 - 15к, что еще как то реально
а вот при 140 18 раз в секунду.
первые 2 эффекта вещают капитально по тестам
3 и 4-ый должны отрабатывать без проблем, те что lightBugs() и light();

а радугу, что странно, и огонь надо потимизировать.

Вот немного изменил функцию радуги, она скорее всего сильно медленнее будет "бежать", но должна позволить управлять лентой. попробуй.
Но скорость я так понял с пульта меняется вот этой rainbow_speed переменной.

C++:
void rainbow () {
  static int i=0;
  static uint32_t prevTime;
  if (millis() - prevTime >4) {
     prevTime = millis();
     i++;
     if (i==NUM_LEDS)
      {
      i=0;
      hue += rainbow_speed;
      }
    //for (byte i = 0; i < NUM_LEDS; i++) {
      leds[i] = mHSV(hue + i * float(255 / NUM_LEDS), 255, 255);
    //}
    
    strip.show();
  }
}
 
Последнее редактирование:

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
7
0
Спасибо за помощь, попробую. Если задать эффектом по-умолчанию третий, который совсем слабый, то реакции на пульт тоже нет.

Скорость радуги тоже меняется с пульта, так что ваша переработка не подходит.
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,741
429
Москва
Если 3-ий эффект тоже сбивает раекцию на пульт, то "
#6
помехи у него по питанию идут

или по связи..
На сколько близко лента и модуль связи ?
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
741
158
еслион подключал просто х светодиодов и работало (при этом в софте было все равно хх светодиодов), а при подключении хх светодиодов начались глюки, то это именно просадки по питанию
никто же не знает, как там подключено все

вон у меня 5м ленты 5в, так я ее там с 2х концов запитал, бп довольно мощный и это при том, что лента не будет гореть в полную силу, там тоже эффекты
дык и то контакт круглого разъема плохой и просадки бывают и есп виснет

висела лента на 12в, где было 3 ргб светодиода на пиксель и отдельные контроллеры вс2811, то оно работало норм от 12в 1.5а
 

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
7
0
Эффект не зависит от подключения самой ленты, только от установки переменной в коде. Если ленту отключить и усатновить много светодиодов в прошивке, то всё-равно но сигналы не реагирует. Возможно сама ардуина создаёт помехи при переключении порта. Попробую поставить конденсатор между землёй и питанием на приёмник.
 

kalobyte

★★★✩✩✩✩
1 Янв 2020
741
158
ардуина не создате никаких помех
просадки по питанию вызываются переключением мощных потребителей, а лента как раз и есть мощный потребитель
там на старых светодиодах надо было возле каждо еще керамический конденсатор лепить
в новых версиях типа 8215 конденсатор интегрировали в диод и эти конденсаторы как раз предотвращают вч помехи по питанию

у меня был глюк с такой лентой, когда я использовал дмх512 протокол и там были какие-то жесткие тайминги в самом юарте и он работал на нестандартной скорости вроде и короче в ленте светодиоды зажигались те, которые не надо зажигать
вобщем или алгоритм в библиотеках не тянул, или же реально контроллер не успевал выдерживать такие жесткие тайминги в протоколе самой ленты

причем я делал меньшее количество диодов и тогда только работало
 

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
7
0
И снова я вернулся к этому проекту.
Вкратце напомню про проект и поведение: отрезок адресной ленты управляется с радиопульта. Тестировался на отрезке 14 светодиодов и всё работало. После того как в скетче по мере увеличения количества светодиодов ухудшается реакция на пульт. На количестве 34-40 перестаёт реагировать на пульт. При этом в скетче 3 эффекта: пламя, радуга, светлячки.
Реакция на пульт не зависит от того какой эффект работает
Реакция на пульт не зависит от того подключена лента к контроллеру или нет (по сериал порту информация о приёме сигнала не поступает)
Реакция на пульт не зависит от того стоит ли конденсатор в питании радиоприёмника
По поводу этой ситуации пытался найти какую-то информацию и в итоге есть два пути: 1) На radiokot (https://www.radiokot.ru/forum/viewtopic.php?p=2960054) увидел упоминание, что модули WL101-341 забиваются помехами даже с работающего рядом микроконтроллера. Пробовал ставит конденсатор между землёй и питанием и относить радиоприёмник на ~0.5 м от ардуины. Никаких отличий в поведении.
Попробовал применить приёмник на микросхеме SYN480R, но похоже что она не ловит информацию с пульта (или не работает с библиотекой RC-Switch), хотя с приёмником SYN115 связывается без проблем.
2) При изучении работы с ИК приёмником с целью уйти от радиопульта увидел в примере такие строчки:
//if (!IRLremote.receiving()) {
// Run code that disables interrupts, such as some led strips
//}
Но у библиотеки rc-switch нет метод, аналогичного .receiving(). Ну или я не нашёл.
Таким образом похоже что на время записи в ленту прерывания могут просто блокироваться. И это похоже на правду т.к. при увеличении количества светодиодов в которые ардуина может принять сигнал от приёмника будет уменьшаться и реакция будет только при попадании в этот промежуток.
Кто-нибудь может подсказать как отключить блокировку прерываний в библиотеках microLED /FastLED или как иначе решить эту проблему?
 

Старик Похабыч

★★★★★✩✩
14 Авг 2019
1,741
429
Москва
Так, у меня есть готовый скетч, который "висит на стене" - светильник из светодиодной полосы на 120 диодов, несколько простеньких эффектов (руки не доходят еще докинуть ну и ленюсь) он управляется пультом ИК, имеет часы (есть режим отображения времени и температуры), подключен сервопривод, что бы пультом регулировать угол наклона ленты. Если интересно, все работает. Если интересно, то попробую оформить в виде поста/статьи. Не так, если этот пост наберет 10 лайков :D
 

Rydsin

✩✩✩✩✩✩✩
9 Мар 2020
7
0
Да с ИК понятно как сделать, хочется радио. Мне там пульт больше нравится. Да и китайцы прислали ИК пульт бракованный работают только часть кнопок (меньшая), а новый ждать долго.