Переделал проект, 4 отрезка ленты включены последовательно, что дает возможность управлять любым пикселем в любой ленте отдельно, что определенно дает больше возможностей для эффектов. Отрезки включены так - (1) IN внизу (1) OUT вверху соединяем с (2) IN внизу и так далее.
Добавил:
- совершенно новый эффект огня, который похож на огонь в отличии от существующего
- снежинки падающие
Модифицировал светящихся жучков, сейчас они независимо по 4 лентам бегают.
Для конкретных размеров меняем (у меня 4 отрезка по 24 LED):
#define X_NUM_LEDS 24 // num leds in strip
#define X_NUM_STRIPS 4 // num strips
тут обязательно 1 оставляем
#define NUM_STRIPS 1
Файлы проекта прикреплены.
Небольшой видосик с новым эффектом тут:
Fire Effect
Алексу спасибо за идею и за исходный код.
Всем добра
День добрый!
Сразу уточню, что почти совсем не разбераюсь в программировании, но очень хорошо понимаю в электронике и схемотехнике. Отсюда могу без сложностей повторить проект на микроконтроллере (в том числе и ардуинке), но пока не силён в нём что-поправить или изменить, разве что совсем по мелочи.
Так вот, без труда повторил проект данной лампы с прошивкой от Алекса (только на "голом" МК), и даже что необходимо настроил под себя. Увидел Ваши доработки, и решил тоже посмотреть и почувствовать разницу...))) Но "залив" Ваш файл в МК ), я получил только бессменный эффект нового огня, и падающих снежинок, переключаемых только в ручную. К стати сначала при компиляции получал ошибку -"exit status 1 'Serial1' was not declared in this scope", которую устранил закомментировав строку - // Serial1.begin(9600);
далее глянул код, и на сколько мне позволили знания, разкомментировал три строки отвечающие за автопереключение режимов, и получил его только между этими двумя новыми эффектами (огонь и снежинки). Всех остальных эффектов просто нет, ни при переключении в ручную ни в автомате. При этом работает режим светильника по тройному клику; вкл/выкл, и кстати не работает изменение вида огня при изменении параметра #define FIRE_PALETTE 0-3
Скажите, что я делаю не так? или у Вас было так и задумано -только два новых режима переключаемых в ручную? Я ожидал получить все предыдущие эффекты и работу режимов от Алекса +Ваши доработки дополнительно... Или я всё не правильно понял?
К слову у меня светильник реализован на двух лентах по 14 светодиодов. Переключил их по схеме описанной Вами (последовательно) и изменил значения в строках настройки в таком виде:
// ************************** НАСТРОЙКИ ***********************
#define CURRENT_LIMIT 2500 // лимит по току в миллиамперах, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
#define AUTOPLAY_TIME 30 // время между сменой режимов в секундах
#define X_NUM_LEDS 14 // num leds in strip
#define X_NUM_STRIPS 2 // num strips
#define X_VNUM_STRIPS X_NUM_STRIPS + 2 // num strips
#define NUM_LEDS X_NUM_LEDS * X_NUM_STRIPS // обшее количсетво светодиодов
#define NUM_STRIPS 1 // количество отрезков ленты (в параллели)
#define LED_PIN 6 // пин ленты
#define BTN_PIN 2 // пин кнопки/сенсора
#define MIN_BRIGHTNESS 5 // минимальная яркость при ручной настройке
#define BRIGHTNESS 255 // начальная яркость
#define FIRE_PALETTE 3 // разные типы огня (0 - 3). Попробуй их все! =)
Буду благодарен за понятный и развёрнутый ответ!
Спасибо!