@nicelight_nsk
Инженер электронщик

Как связать библиотеки adafruit_neopixel и VirtualWire в arduino?

Столкнулся с проблемой взаимодействия библиотеки для ленты WS2812 и rf передатчика на 433 Mhz. Выяснилось, что adafruit_neopixel во время отпраки данных на ленту запрещает любые прерывания, в итоге RF приемник просто не может протоклнуть ничего в ардуину.
Как только добавляю в скетч строчку pixels.show(); для отображения WS2812 ленты, приемная часть программы затыкается намертво. Видимо потому что достаточно частые обновления ленты идут.
Прошу помощи для наладки взаимодействия цветной LED ленты и rf передатчика. Как вариант путем связи двух ардуин в мост. Какой лучше выбрать протокол, чтобы он по минимуму прерывания использовал?
  • Вопрос задан
  • 648 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ocelot
@Ocelot
Переучить VirtualWire на использование Timer2? Учтите, что Timer2 8-разрядный, его может не хватить. В теории, нужно заменить все регистры, относящиеся к таймеру, в функции vw_setup(), заменить обработчик прерывания SIGNAL(TIMER1_COMPA_vect) и поправить функцию _timer_calc(), т.к. для разных таймеров значения предделителя разные.

Ещё можно поискать другую библиотеку для WS2812. Вот эта, кажется, вообще не использует таймеры, только ассемблерную магию:
https://github.com/cpldcpu/light_ws2812
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы