лента 2812B для имитации работы двигателей Millenium Falcon

Dmitriy311

✩✩✩✩✩✩✩
23 Окт 2019
2
0
привет всем!
в программировании ардуино я новичок.
скетчи худо-бедно составлять научился, даже кое что работает.
со схемотехникой и прочими вопросами по железу проблем нет, инженер КИП - кое что умею. а вот с программированием потруднее, пока.
собственно проект в том, что бы сделать эффекты освещения и звукового сопровождения для модели "1000-летнего Сокола" из "Звездных войн" - нечто вроде этого:
DeAGOSTINI Build Star Wars Millennium Falcon complete !(Auto Demo mode)
естественно с учетом того, что масштаб моей модели поменьше будет - модель "Banlai" 1/72 - не все эффекты получится реализовать, но минимум - работа двигателей, освещение кабины и немного звуковых эффектов будут.
в данный момент мучаю адресную ленту. написан скетч с тремя эффектами - версия не окончательная, но доработать не составит труда.
проблема собственно в том, что эти эффекты нужно заставить включаться по командам с ИК пульта.
происходит пока следующее - включается цикл одного эффекта и все. другой эффект получается включить только после "резета".
при этом эффекты работают только в цикле: for; do-while; while.
при попытках задавать условия выхода из цикла (while, if()break) или попытке управлять через switch-case-break - переключения между циклами происходят, но - выкидывает сразу в конец цикла, а сам цикл не отрабатывает.
скетч построен из "кусочков" скетчей надерганных на просторах паутины, читаю разные форумы, пытаюсь менять условия - пока никак. возможно стоит попробовать все это дело писать на других библиотеках.
собственно - библиотеки "Adafruit_NeoPixel.h" и "IRremote.h". варианты скетча во вложениях.
сам скетч во вложении - конструкция громоздкая, может в этом и проблема? но как упростить все это с сохранением нужных эффектов и возможностью внесения изменений пока не сообразил.
буду благодарен за любые дельные советы.
ПыСы: персональное спасибо Алексу за его обучалки и замечательный сайт - основную информацию почерпнул именно здесь.
 

Вложения