И снова я вернулся к этому проекту.
Вкратце напомню про проект и поведение: отрезок адресной ленты управляется с радиопульта. Тестировался на отрезке 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 или как иначе решить эту проблему?