Автономная гирлянда по мотивам А.Гайвера

ШАПКА

Есть замечательная программа jinx. Вот сайт.

Мощный, удобный и простой в освоении инструмент.

В самом начале знакомства с этой програмой я управлял своей гирляндой онлайн. То есть пока включен комп и работает эта программма работает и гирлянда. Меня это не устраивало.

Мне нужно было

1. Работа гирлянды без компьютера.

2.Возможность самостоятельно ,,изготавливать,, эффекты, желательно на ,,коленке,,.

3. Простота и надежность.

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

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


Сразу поясню человеку с ником ru.lurk, Гайвер Бог, я в курсе, но большинство людей не в состоянии по быстренькому накидать код или переписать скетч, чтобы изменить картинку, которую  воспроизводит гирлянда этого конкретного человека. Я так же не обладаю знаниями, достаточными для внесения мгновенных правок в эффект, который по тем или иным причинам мне не понравился. Я же предлагаю работоспособный, проверенный в железе вариант, повторить и освоить который сможет подавляющее большинство людей.

И, вам ли, ru.lurk, не знать, что в большинстве проектов Гайвера такая жуткая каша, столько ненужного, что копировать всё это нет никакого смысла.

Безусловно я именно у Гайвера впервые увидел такую гирлянду, но сделал ту, которой и расскажу здесь. И, надеюсь облегчу кому то жизнь.

Повторю. Приоритетом для меня была возможность воспроизведения моей гирляндой файлов созданных в программе jinx. Гайвер не знает о такой программе, наверное.Функционал и возможности которой по удобству использования и оперативного внесения изменений в картинку не идут ни в какое сравнение с кашей Гайвера, разобраться в которой способен далеко не всякий.

Для сектантов Гайвера есть секта Гайвера.

Для простых людей, которым нужна красивая, оригинальная, а не такая же как у всех картинка есть другие более простые варианты. Об одном из них я и говорю.



По просьбам многих людей делюсь опытом создания великолепной гирлянды на адресных диодах.

Сразу хочу подчеркнуть, что я лично ничего не придумал, за исключением способа создания самих эффектов для гирлянды,

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

нужного мне результата.

Но много времени я потратил на сбор и анализ информации из разных источников. Так, что если весь ,,опыт,, будет

находиться в одном месте, вы сможете собрать свой вариант гораздо быстрее.

Итак, толчком послужило вот этовидео -  https://www.youtube.com/watch?v=MgRmiXxYL5g  , спасибо Алексу Гайверу за его творчество.

Но количество эффектов и ограниченный функционал ардуино нано заставили искать более интересный вариант.

В итоге поиски привели на этот замечательный форум -  https://www.asidneff.ru/index.php  , огромное спасибо его создателю,

я получил там огромное количество подсказок.

В конце концов на этом ресурсе -  https://forum.flprog.ru/index.php?sid=7d39fe1f17f6d376109268...  , я нашел всё, что меня полностью устроило.

Огромное спасибо человеку с ником aidar_i . Он проделал титаническую работу, чтобы нам с вами жилось легче!

Мои ошибки.

Первую ошибку я совершил в процессе заказа светодиодов. Я заказал такие, и понял разницу с этими уже когда получил первые. Пришлось перезаказывать и ждать еще очень долгло.

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Поясняю - WS2811(на фото внизу) расчитаны на питание 12 вольт,они дешевле чем WS2812 и разрезать их можно лишь на кластеры, минимум по три штуки. На фото хорошо видно, что линии отреза проходят через каждые три светодиода. Они великолепно управляются, но светят не по одному, а минимум по три штуки подряд. Пришлось заказывать WS2812(на фото сверху) их можно нарезать на любые отрезки начиная с 1шт. и напряжение питания для них 5 вольт. Именно из них я и изготовил свою гирляндую Но это не самый правильный и удобный вариант.

Рекомендую использовать вот такие!!!!!!!!!

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Ссылка на эти модули для примера. Эти модули монтировать гораздо удобнее и они намного надежнее разрезанной ленты. Лента в процессе монтажа, пайки и дальнейшей эксплуатации весьма подвержена повреждениям. Уж слишком она тонкая и ,,нежная,,.

Не повторяйте этой ошибки , не ведитесь на меньшую стоимость ленты, покупайте такие модули!!!!!

Для удобства монтажа я сделал вот такой шаблон.

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Вот так, под каждую скобу помещал отрезанные диоды

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

А далее дело техники. Плюс такого способа в  том, что в любой момент монтаж можно отложить и возобновить работу в любое время. Диоды остаются зафиксированными и с мест не сдвигаются.

Еще один важный момент это сами провода.

Сначала я попробовал короткие отрезки, которые соответствовали расстоянию между двумя соседними диодами, но пришел к выводу, что на вехний диод будет приходиться весь вес всей конструкции, а лента не выглядит прочной, тогда я решил, что провода питания, а это наружние провода, будут сплошные. То есть я разметил и снял изоляцию в тех местах, где осуществлялась пайка. При этом весь вес конструкции переносился именно на провода, что более надежно. А провода по которым по гирлянде проходит управляющий сигнал, я сделал короткими.

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост
Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост
Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Надеюсь на фото хорошо видно, что я имею ввиду.

И после того как я спаял несколько полосок будущей гирлянды, обнаружился очень досадный момент.

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Обведенные красным контакты светодиодов, иногда сопрприкасались с оголенной часью проводов и в результате замыкания, работать матрица переставала. После обнаружения этой проблемы, я стал надевать на оголенную часть провода термоусадку.

Надеюсь теперь у вас не будет вопросов, почему эти модули гораздо удобнее.

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

После того, как я спаял отдельные ,,нитки,, я собрал гирлянду в два модуля. Один 9х17 второй 7х17. Такие размеры получились из за размеров половинок окна.

Да, совсем забыл  сказать, что расстояние между пикселями я сделал 65 миллиметров. Визуально такое решение полностью себя оправдало. Все эффекты с улицы смотрятся потрясающе.

Итого на выходе я получил вертикальную змейку 16 по горизонтали, 17 по вертикали  и с началом в правом нижнем углу.

Вот ссылка на страницу А.Гайвера, где он подробно рассказывает о типах матриц и способах подключения.

Далее используя кабельканал 10мм я собрал готовые нитки в матрицу.

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост
Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост
Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Думаю с этим все понятно.

Питание (от компьютерного блока питания) я пустил только снизу.

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Фото с сайта Гайвера(Бога). Принцип подключения точно такой же. Только на картинке у Гайвера(Бога) матрица повернута 90 градусов. У меня питание идет снизу.

надеюсь вам понятно. Если нет - спрашивайте.


Контроллер.

Я использовал вот такой модульNodeMcu. Вот такой картридер .

Подключал по такой схеме

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Здесь картридер для микро сд карт, но надписи полностью соответствуют.

я попробовали с тем, и с другим, все работает. Внимательно смотрите на надписи на плате и подключайте согласно схеме!

Далее скетч!



#include <FastLED.h>

#include <SPI.h>

#include <SD.h>

#define NUM_LEDS 272 // LED number

#define DATA_PIN D1 // your data arduino pin

#define CHIPSET WS2812B // your LED chip type

#define COLOR_ORDER GRB

#define BRIGHTNESS 50

int count_files = 20; // Количество файлов

File fxdata;

CRGB leds[NUM_LEDS];

int val;

void setup()

{

FastLED.addLeds<CHIPSET, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );

FastLED.setBrightness(BRIGHTNESS);

for(int y = 0 ; y < NUM_LEDS ; y++)

{

leds[y] = CRGB::Black; // set all leds to black during setup

}

FastLED.show();

pinMode(10, OUTPUT); // CS/SS pin as output for SD library to work.

digitalWrite(10, HIGH); // workaround for sdcard failed error...

if (!SD.begin(4))

{

Serial.println("sdcard initialization failed!");

return;

}

Serial.println("sdcard initialization done.");

// test file open

fxdata = SD.open("1.out"); // read only

if (fxdata)

{

Serial.println("file open ok");

fxdata.close();

}

}

void loop()

{

for(val = 1; val <= count_files; val++)

{

fxdata = SD.open(String(val)+".out"); // read only

if (fxdata)

{

Serial.println("file open ok");

}

while (fxdata.available())

{

Sortled();

FastLED.show();

delay(50); // set the speed of the animation. 20 is appx ~ 500k bauds

}

// close the file in order to prevent hanging IO or similar throughout time

fxdata.close();

}

}

int Sortled () {

CRGB templeds[NUM_LEDS];

const uint32_t XYTable[] = {

255, 254, 221, 220, 187, 186, 153, 152, 119, 118, 85, 84, 51, 50, 17, 16,

256, 253, 222, 219, 188, 185, 154, 151, 120, 117, 86, 83, 52, 49, 18, 15,

257, 252, 223, 218, 189, 184, 155, 150, 121, 116, 87, 82, 53, 48, 19, 14,

258, 251, 224, 217, 190, 183, 156, 149, 122, 115, 88, 81, 54, 47, 20, 13,

259, 250, 225, 216, 191, 182, 157, 148, 123, 114, 89, 80, 55, 46, 21, 12,

260, 249, 226, 215, 192, 181, 158, 147, 124, 113, 90, 79, 56, 45, 22, 11,

261, 248, 227, 214, 193, 180, 159, 146, 125, 112, 91, 78, 57, 44, 23, 10,

262, 247, 228, 213, 194, 179, 160, 145, 126, 111, 92, 77, 58, 43, 24, 9,

263, 246, 229, 212, 195, 178, 161, 144, 127, 110, 93, 76, 59, 42, 25, 8,

264, 245, 230, 211, 196, 177, 162, 143, 128, 109, 94, 75, 60, 41, 26, 7,

265, 244, 231, 210, 197, 176, 163, 142, 129, 108, 95, 74, 61, 40, 27, 6,

266, 243, 232, 209, 198, 175, 164, 141, 130, 107, 96, 73, 62, 39, 28, 5,

267, 242, 233, 208, 199, 174, 165, 140, 131, 106, 97, 72, 63, 38, 29, 4,

268, 241, 234, 207, 200, 173, 166, 139, 132, 105, 98, 71, 64, 37, 30, 3,

269, 240, 235, 206, 201, 172, 167, 138, 133, 104, 99, 70, 65, 36, 31, 2,

270, 239, 236, 205, 202, 171, 168, 137, 134, 103, 100, 69, 66, 35, 32, 1,

271, 238, 237, 204, 203, 170, 169, 136, 135, 102, 101, 68, 67, 34, 33, 0

};

fxdata.readBytes((char*)templeds, NUM_LEDS*3);

for (int k=0; k < NUM_LEDS; k++) {

leds[XYTable[k]] = templeds[k];

}

}




Здесь необходимо настроить под свою гирлянду.

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

И меняем массив на соответствующий вашей матрице

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Делается это при помощи специальной программы.

Качайте .

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост
Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост
Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Выставьте размер по вертикали и горизонтали соответствующие вашей реальной матрице.

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Посленажатия кнопки ниже появится кусок скетча, сгенерированного под ваши конкретные параметры.

необходимо выделить из него массив с цифрами, и вставить  в наш скетч.

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост
Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Собственно  всё!

Скетч готов к прошивке!

Для успешной прошивки я рекомендую удалить на время все библиотеки, которые находятся в соответствующей папке arduino ide. Скопируйте все содержимое папки libraries в другое место, а в освободившиюся папку вставьте содержимое этого архива . Это гарантировано избавит вас от проблем при компиляции.

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

О процессе прошивки я подробно рассказывать не буду, на сайте Бога об этом есть всё!

Отдадим ему должное и порадуем ru.lurk .


И схема

Автономная гирлянда по мотивам А.Гайвера Гирлянда, Arduino, Видео, Длиннопост

Со скетчем наверное всё. Если что то непонятно спрашивайте. Не стесняйтесь ходить по ссылкам. Я всю информацию нашел именно там. Завтра запишу видео о процессе создания эффектов и записи их на карту памяти. Там все достаточно просто, но мне по началу очень не хватало такого видео пришлось самостоятельно разбираться, а ваше время я постараюсь сэкономить.