LEDS #300 - новогодняя гирянда с эффектами (стандартная лента 5 м, 300 шт WS2812)

Новый год уже скоро. Эта простая в повторении гирлянда позволит в минимальное время создать достойное праздничное оформление окна (как на видео), рабочего места и… Для гирлянды потребуется стандартная 5-ти метровая лента со светодиодами WS2812, Arduino (Pro, mini), старый компьютерный блок питания, резистор 200 ом, желательно конденсатор 1000..3000 мкФ и немного свободного времени.
В интернете почти нет прошивок для Arduino для длинных гирлянд — это связано с ограничением по скорости и по объему RAM контроллера ATmega328, используемого в Arduino. В проекте используются переработанные алгоритмы, а также несколько новых, написанных и оптимизированных специально для используемого железа.
Подключение самой ленты WS2812 к контроллеру довольно простое, тут есть несколько статей на эту тему, для начинающих кроме того, есть много обучающих видео и статей по теме
А вот написать качественную прошивку (учитывая описанные выше сложности) довольно сложно и долго, тут выложена готовая прошивка, а рассматриваются только краткие особенности подключения.
1. Для вывода информации на ленту используется контакт, обозначенный D12 на плате Arduino
2. Через резистор 200 Ом этот вывод контроллера подключается ко входу DIN ленты.
3. Питание берется с разъема блока питания как для ленты так и для Arduino (поэтому на фото на видео идет один провод к ленте — земля и питание у них общие)
4. Для исключения помех, ставил конденсатор 3000 мкФ по питанию у Arduino
5. Питание (+ 5В) на ленту желательно подавать с обеих сторон (лента все таки 5 м, медь там тонкая, хоть и мощность светодиодов в прошивке ограничена, но все равно ток будет большой !)
Учтите, что теоретически при токе 60 mA на светодиод в режиме белого цвета, потребляемый ток всей 5-ти метровой ленты будет 18А по линии 5В (остальные линии блока питания оставляем неиспользуемыми). Это максимальный ток, по факту, с данной прошивкой 4-6 А от блока питания будет требоваться, а то и более. Некоторые БП могут уйти в защиту при перекосе потребления по линиям +5в и +12в (+12в у нас не подключено !). Тогда, видимо, придется искать другой БП. У меня стоит списанный ATX — тянет без проблем, даже не греется.
Способов запрограммировать Arduino существует великое множество, некоторые из них описаны на сайте по Arduino
Можно долго говорить, как все быстро, плавно, красиво и гладко. Но лучше один раз посмотреть на часть эффектов из проекта:
Саму прошивку выложил сюда
В интернете почти нет прошивок для Arduino для длинных гирлянд — это связано с ограничением по скорости и по объему RAM контроллера ATmega328, используемого в Arduino. В проекте используются переработанные алгоритмы, а также несколько новых, написанных и оптимизированных специально для используемого железа.
Подключение самой ленты WS2812 к контроллеру довольно простое, тут есть несколько статей на эту тему, для начинающих кроме того, есть много обучающих видео и статей по теме
А вот написать качественную прошивку (учитывая описанные выше сложности) довольно сложно и долго, тут выложена готовая прошивка, а рассматриваются только краткие особенности подключения.
1. Для вывода информации на ленту используется контакт, обозначенный D12 на плате Arduino
2. Через резистор 200 Ом этот вывод контроллера подключается ко входу DIN ленты.
3. Питание берется с разъема блока питания как для ленты так и для Arduino (поэтому на фото на видео идет один провод к ленте — земля и питание у них общие)
4. Для исключения помех, ставил конденсатор 3000 мкФ по питанию у Arduino
5. Питание (+ 5В) на ленту желательно подавать с обеих сторон (лента все таки 5 м, медь там тонкая, хоть и мощность светодиодов в прошивке ограничена, но все равно ток будет большой !)
Учтите, что теоретически при токе 60 mA на светодиод в режиме белого цвета, потребляемый ток всей 5-ти метровой ленты будет 18А по линии 5В (остальные линии блока питания оставляем неиспользуемыми). Это максимальный ток, по факту, с данной прошивкой 4-6 А от блока питания будет требоваться, а то и более. Некоторые БП могут уйти в защиту при перекосе потребления по линиям +5в и +12в (+12в у нас не подключено !). Тогда, видимо, придется искать другой БП. У меня стоит списанный ATX — тянет без проблем, даже не греется.
Способов запрограммировать Arduino существует великое множество, некоторые из них описаны на сайте по Arduino
Можно долго говорить, как все быстро, плавно, красиво и гладко. Но лучше один раз посмотреть на часть эффектов из проекта:
Саму прошивку выложил сюда
Самые обсуждаемые обзоры
+122 |
5875
140
|
+75 |
2341
50
|
Прошивок достойных готовых для длинных лент вот нет :) — именно это я тут публикую :)
Никого повторы не останавливают)))))
Не могу с жабой договориться.
ebay.com/itm/232899956120
drive.google.com/open?id=1bachueYRMDOOEKCIUShpquCPAcPh4Hpn
HEX заливать геморойно
mysku.club/blog/aliexpress/58913.html
мне нравится больше.
Вот тут сделано реально круто.
Прямо в Arduino IDE имеется блестящая библиотека от Adafruit, с кучей примеров, и кучей статей по теме — learn.adafruit.com/search?q=neopixel
В конце-концов, есть Neopixel Uberguide: cdn.sparkfun.com/datasheets/Components/LED/adafruit-neopixel-uberguide.pdf
WS2812 требует три байта оперативки на диод.
Вот лента на 300 диодов, переливается радугой под управлением Arduino Nano:
Расход памяти:
Вот, снял демо:
Еще — цель не просто по очереди последовательно вывести разными цветами, а сделать что-то красивое, динамичное. То, что у Вас на фото — это один эффект :) а остальное как будете делать? Покажите ЛЕНТЫ в 300 светодиодов с эффектами :)
Снимите обзор в архив, не позорьтесь, и не минусите, это жалко выглядит
А что ж вы полностью все 5 метров не сняли? Не будет на Atmega328 эта библиотека работать на такой длине в 300 LED. Там она под другие процессоры с большим объемом памяти (ESP8266) заточена.
PS. А я вижу ваше окошко бледновато выглядит :) не позорьтесь :) залейте норм прошивку. Ссылка там в конце обзора.
Я эту ленту планировал распустить на куски и собрать огромные восьмисегментные часы. К ардуине уже присобачен GPS-приёмник, чтобы брать со спутников точное время, ардуина разбирает NMEA и мигает лампочками, не потея. Если вспотеет, будет заменена на сторублёвую STM32.
Тут половины эффектов нигде нет. Код авторский. Даже если похоже — вращения все в обе стороны. Нигде нет.
В чём подвиг-то? Исходники покажите, может мы правда восхитимся, вдруг у вас там всё вправду на сдвиге битов, затейливой работе с аппаратными таймерами, то-сё, мы снимем шляпу, цокнем языком, почешем в затылке…
Только меня не покидает ощущение, что там где-то в начале предательски засветится если не Neopixel, так #include «FastLED.h»
ЗЫ. Если не меняю NEO_KHZ800 на NEO_KHZ400 то лента мерцает непонятными цветами… У всех так?
… Поэтому hex прошивка не работает…
Но вообще-то если 800 kHz, то на 400 никак не может работать (не выполняются требования к таймингам). Смутно подозреваю, что речь-то вовсе не о битовой тактировке, а о эффективной скорости передачи. А это надо уже анализатором смотреть или библиотеку ковырять…
Но все равно, битовый тайминг привязан к 800 kHz, хотя диапазон солидный (500...1500 kHz).
Против кучи других эффектов в библиотеке — ни о чем.
Мне только интересно, чего так трястись за прошивку? Что-то не видно монетизации, тогда ради чего?
Но вот только чушь не пишите про память и эффекты, ладно? — Sanja здесь прав.
Для того, чтобы генерировать все эти эффекты на 300-светодиодной герлянде нужно реально из большого — только 900 байт буфера — остальное делается через HSV2RGB и все. Поскольку я сам писал на асме работу с WS2812b, я и из чистого ATTINY85 выжимал такие штуки с WS2812, которые ардуинщикам и не снились. Там только одна проблема — ограничение по тактовке — соответственно и количеству диодов (но 300 — легко). С битбэнг-ом это особенно проявляется, но можно обойти это через SPI / i2c.
Я под атмел тоже писал на асме, но в те времена tiny2313 назывались at90s2313 и никаких WS, конечно же, не было, поэтому только под матрицы голых светодиодов для бегущих строк…
PS: Автор, конечно,
трындитгонит чушь и набивает себе цену на пустом месте. Все неопикселовские либы легко портируются (или уже портированы) под современные esp или stm, — на ардуине свет не сошёлся, поди ещё и финансово дешевле выйдет, а ограничений в памяти не будет ну вот вообще… Даже на этом ресурсе на ESP кто-то делал WS-адресные ленты, и у Гайвера что-то было точно, хотя я не очень активно знаком с его творчеством…www.evilgeniuslabs.org/
— что показательно, код каждого выложен на github
Мне вот этот особо приглянулся —
А если про то, что ардуинщикам не снилось — например на 85 управление лентой всок и одновременных опрос ик приёмника.
У нас тут ещё с Yuri был спор, где он говорил что это невозможно.
Все возможно если на асме писать — встроил опрос ик между отправкой 24 бит цвета (там таймаут позволяет).
Работает очень просто — сигнал появился на ик — бросили все, приняли код, заново пошли ленту грузить. Единственное что во время приёма лента остаётся светить в недетерминированном состоянии. А ИК использовался для переключения типа эффекта, его скорости и цвета.
Увы, в плане фантазии с эффектами у меня получается куда хуже писанины на asm…
А на последней ардуинке собрал управление для матрицы 10х10, прошивку взял из этого проекта
alexgyver.ru/gyvermatrixbt/
Спасибо автору обзора.
Для работы с эффектами с пониженной яркостью, можно брать провода потоньше, но запитывать в нескольких точках обязательно!
Для меня, например, это очень просто. Никаких «довольно сложно и долго». Долго — это когда мне просто лень.
Я до сих пор не могу понять в чем великая инновационность ваших исходников, но там реально дел на один вечер.
Эх-ма. Надо было только хексы выкладывать, а в обзорах писать, что у меня мега-экстра-супер-гипер-секретные алгоритмы, до которых планета ещё не доросла…
Ожидаем момента, когда тут кто-нибудь начнёт торговать скетчами под ардуину-проМини :-)
PS: И что характерно: всё, что касается моей теплицы, погодника или тех же GPS-часов — реально уникальный авторский код, написанный мною практически с нуля… Во я лллошара :)
ЗЫ И спасибо за это, кстати.
#include <WS2812FX.h>
#define LED_COUNT 400 // кол-во светодиодов в гирлянде
#define LED_PIN D1 // пин для вывода на гирлянду
#define DEFAULT_SPEED 2500 // задержка в мс, по дефолту 1000
#define TIMER_MS 60000 // время длительности одного эффекта в мс
WS2812FX strip = WS2812FX(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800);
unsigned long last_change = 0;
unsigned long now = 0;
int modes[] = {32,3,13,55,33,10,5,39,5,33,14,22,12,35,38,7,39,11,20,46,39,8,12,43,35,13,44,32,17,28,13,36,23,14,34,}; // массив с желаемыми ID эффектов
int i = 0; // счётчик индекса в массиве эффектов
int l = 0; // индекс прошлого (last) эффекта
int m = 35; // кол-во эффектов, см. массив modes
void setup() {
strip.init();
strip.setBrightness(250); // установка яркости 0 — 255
strip.setSpeed(DEFAULT_SPEED); // установка скорости (задержки)
strip.setColor(0xFF0400); // дефолтный цвет
strip.setMode(6); // стартовая установка 6го режима
strip.start();
}
void loop() {
now = millis();
strip.service();
if(now — last_change > TIMER_MS) {
if(l == 17 || l == 42 || l == 46){
strip.setSpeed(DEFAULT_SPEED); // вернуть скорость на дефолт
}
if(modes[i] == 17 || modes[i] == 42 || modes[i] == 46){
strip.setSpeed(DEFAULT_SPEED*3); // очень быстрые — замедлить, больше задержка х3
}
strip.setMode(modes[i]);
last_change = now;
l = modes[i];
//i = random(0,12);
i++;
if(i == m){
i = 0;
}
}
}
github.com/toblum/McLighting
что бы можно было запустить светодиоды WS2811
Как раз позавчера повесил гирлянду 2812, использую скетч McLighting. Только для режима авто сделал свою подборку.
WS2812 — 800 KHz
WS2811 — 400 KHz
Это не влияет на работу
Можно здесь изменить значение если не заработает на 800.
Я плохо разбираюсь в arduino
Подчеркнул
Сгорели первые 7 светодиодов, которые не были смотаны в бобину. Из-за них не передавались данные на следующие светодиоды. Отрезал их, подкоректировал скетч. Пока работает. Но кто знает сколько оно будет работать. Даже не охота цеплять на место.