RSS блога
Подписка
И еще одна елочная гирлянда
- Цена: $13.19 x 4
- Перейти в магазин
Как мне кажется, с появлением индивидуально адресуемых светодиодов китайцы поставили жирную точку в процессе совершенствования конструкции елочной гирлянды. Совершенствовать теперь можно только алгоритмы свечения.
Живу я в одноэтажной индивидуальной застройке белорусского райцентра. С приближением зимнего солнцестояния она погружается в мрак. Фонари на столбах встречаются в основном на перекрестках, световые украшения домов еще реже. Однажды было решено, что требуется хоть как-то обозначить приближающиеся праздники.
Для этого на ALiexpress были куплены 4 комплекта управляемых светодиодных гирлянд.
Каждая гирлянда упакована в отдельный пакетик.
Потребляет в режиме максимального свечения чуть больше полутора ампер.
Также в магазине электротоваров куплены кусок трехжильного кабеля с толстой жилой и монтажная коробка IP65. В собственных закромах найдены компьютерный AT блок питания и Arduino Nano v.3.
Долго рассказывать про индивидуально адресуемые светодиоды не буду. На mysku обзоры поделок с их использованием публиковались неоднократно. Кратко принцип работы: на вход получается код цвета, согласно этим данным выставляется интенсивность свечения красной, синей и зеленой компонент, остальные данные передаются неизменными со входа на выход для следующих устройств в цепочке. И так до получения команды сброса.
Схема подключения (вид сверху, для простоты в каждой петле нарисовано по 4 светодиода):
На макушке елки находится распределительная коробка, в которую по кабелю приходит питание и линия управления. Из коробки выходят 4 петли, сначала опускающиеся вниз, потом возвращающиеся вверх. Один конец каждой петли подключен к питанию и земле. По шине данных
петли соединены последовательно.
Знаю, что передавать 5 вольт 6 ампер на 10 метров — не самая лучшая идея. Но в такой реализации есть одно весомое преимущество — блок питания остается в доме. Нигде в наружной схеме нет опасных для жизни напряжений.
Поключаем питание и данные в распределительной коробке.
Подключаем питание и данные с другой стороны кабеля.
В качестве елки используем тую возле дома.
Вид с повешенной гирляндой:
Видна полностью «северная» петля и часть «западной». Белая линия — плохо спрятанный питающий кабель.
Цветовые эффекты, отображаемые гирляндой, ограничены только фантазией автора прошивки. Признаю, что в условиях ограниченного времени с моей фантазией было не очень.
Реализованные эффекты описывать не буду, они видны на видео.
Всех с Наступающим!
Живу я в одноэтажной индивидуальной застройке белорусского райцентра. С приближением зимнего солнцестояния она погружается в мрак. Фонари на столбах встречаются в основном на перекрестках, световые украшения домов еще реже. Однажды было решено, что требуется хоть как-то обозначить приближающиеся праздники.
Для этого на ALiexpress были куплены 4 комплекта управляемых светодиодных гирлянд.
Каждая гирлянда упакована в отдельный пакетик.
Потребляет в режиме максимального свечения чуть больше полутора ампер.
Также в магазине электротоваров куплены кусок трехжильного кабеля с толстой жилой и монтажная коробка IP65. В собственных закромах найдены компьютерный AT блок питания и Arduino Nano v.3.
Долго рассказывать про индивидуально адресуемые светодиоды не буду. На mysku обзоры поделок с их использованием публиковались неоднократно. Кратко принцип работы: на вход получается код цвета, согласно этим данным выставляется интенсивность свечения красной, синей и зеленой компонент, остальные данные передаются неизменными со входа на выход для следующих устройств в цепочке. И так до получения команды сброса.
Схема подключения (вид сверху, для простоты в каждой петле нарисовано по 4 светодиода):
На макушке елки находится распределительная коробка, в которую по кабелю приходит питание и линия управления. Из коробки выходят 4 петли, сначала опускающиеся вниз, потом возвращающиеся вверх. Один конец каждой петли подключен к питанию и земле. По шине данных
петли соединены последовательно.
Знаю, что передавать 5 вольт 6 ампер на 10 метров — не самая лучшая идея. Но в такой реализации есть одно весомое преимущество — блок питания остается в доме. Нигде в наружной схеме нет опасных для жизни напряжений.
Поключаем питание и данные в распределительной коробке.
Подключаем питание и данные с другой стороны кабеля.
В качестве елки используем тую возле дома.
Вид с повешенной гирляндой:
Видна полностью «северная» петля и часть «западной». Белая линия — плохо спрятанный питающий кабель.
Цветовые эффекты, отображаемые гирляндой, ограничены только фантазией автора прошивки. Признаю, что в условиях ограниченного времени с моей фантазией было не очень.
Скетч
// NeoPixel Ring simple sketch © 2013 Shae Erisson
// released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library
#include "Adafruit_NeoPixel.h"
#ifdef __AVR__
#include <avr/power.h>
#endif
#include <QueueArray.h>
#define PIN 13
#define NUMPIXELS 200
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 10;
void setup() {
pixels.begin();
}
void loop() {
int r, g ,b;
int i, j, k;
pixels.begin();
for (k=0; k<10; k++) {
r = random(5);
g = random(5);
b = random(5);
for(i=0;i<25;i++) {
for (j=0;j<4;j++) {
pixels.setPixelColor(j*50+(i+25)%25, pixels.Color(r*50,g*50,b*50));
pixels.setPixelColor(j*50+(i+24)%25, pixels.Color(r*45,g*45,b*45));
pixels.setPixelColor(j*50+(i+23)%25, pixels.Color(r*40,g*40,b*40));
pixels.setPixelColor(j*50+(i+22)%25, pixels.Color(r*35,g*35,b*35));
pixels.setPixelColor(j*50+(i+21)%25, pixels.Color(r*30,g*30,b*30));
pixels.setPixelColor(j*50+(i+20)%25, pixels.Color(r*25,g*25,b*25));
pixels.setPixelColor(j*50+(i+19)%25, pixels.Color(r*20,g*20,b*20));
pixels.setPixelColor(j*50+(i+18)%25, pixels.Color(r*15,g*15,b*15));
pixels.setPixelColor(j*50+(i+17)%25, pixels.Color(r*10,g*10,b*10));
pixels.setPixelColor(j*50+(i+16)%25, pixels.Color(r*5,g*5,b*5));
pixels.setPixelColor(j*50+(i+15)%25, pixels.Color(r,g,b));
pixels.setPixelColor(j*50+(i+14)%25, pixels.Color(0,0,0));
pixels.setPixelColor((j+1)*50-(i+25)%25, pixels.Color(r*50,g*50,b*50));
pixels.setPixelColor((j+1)*50-(i+24)%25, pixels.Color(r*45,g*45,b*45));
pixels.setPixelColor((j+1)*50-(i+23)%25, pixels.Color(r*40,g*40,b*40));
pixels.setPixelColor((j+1)*50-(i+22)%25, pixels.Color(r*35,g*35,b*35));
pixels.setPixelColor((j+1)*50-(i+21)%25, pixels.Color(r*30,g*30,b*30));
pixels.setPixelColor((j+1)*50-(i+20)%25, pixels.Color(r*25,g*25,b*25));
pixels.setPixelColor((j+1)*50-(i+19)%25, pixels.Color(r*20,g*20,b*20));
pixels.setPixelColor((j+1)*50-(i+18)%25, pixels.Color(r*15,g*15,b*15));
pixels.setPixelColor((j+1)*50-(i+17)%25, pixels.Color(r*10,g*10,b*10));
pixels.setPixelColor((j+1)*50-(i+16)%25, pixels.Color(r*5,g*5,b*5));
pixels.setPixelColor((j+1)*50-(i+15)%25, pixels.Color(r,g,b));
pixels.setPixelColor((j+1)*50-(i+14)%25, pixels.Color(0,0,0));
}
pixels.show();
delay(10);
}
}
for (k=0; k<10; k++) {
r = random(5);
g = random(5);
b = random(5);
for(i=24;i>=0;i--) {
for (j=0;j<4;j++) {
pixels.setPixelColor(j*50+(i+26)%25, pixels.Color(0,0,0));
pixels.setPixelColor(j*50+(i+25)%25, pixels.Color(r*50,g*50,b*50));
pixels.setPixelColor(j*50+(i+24)%25, pixels.Color(r*45,g*45,b*45));
pixels.setPixelColor(j*50+(i+23)%25, pixels.Color(r*40,g*40,b*40));
pixels.setPixelColor(j*50+(i+22)%25, pixels.Color(r*35,g*35,b*35));
pixels.setPixelColor(j*50+(i+21)%25, pixels.Color(r*30,g*30,b*30));
pixels.setPixelColor(j*50+(i+20)%25, pixels.Color(r*25,g*25,b*25));
pixels.setPixelColor(j*50+(i+19)%25, pixels.Color(r*20,g*20,b*20));
pixels.setPixelColor(j*50+(i+18)%25, pixels.Color(r*15,g*15,b*15));
pixels.setPixelColor(j*50+(i+17)%25, pixels.Color(r*10,g*10,b*10));
pixels.setPixelColor(j*50+(i+16)%25, pixels.Color(r*5,g*5,b*5));
pixels.setPixelColor(j*50+(i+15)%25, pixels.Color(r,g,b));
pixels.setPixelColor((j+1)*50-(i+26)%25, pixels.Color(0,0,0));
pixels.setPixelColor((j+1)*50-(i+25)%25, pixels.Color(r*50,g*50,b*50));
pixels.setPixelColor((j+1)*50-(i+24)%25, pixels.Color(r*45,g*45,b*45));
pixels.setPixelColor((j+1)*50-(i+23)%25, pixels.Color(r*40,g*40,b*40));
pixels.setPixelColor((j+1)*50-(i+22)%25, pixels.Color(r*35,g*35,b*35));
pixels.setPixelColor((j+1)*50-(i+21)%25, pixels.Color(r*30,g*30,b*30));
pixels.setPixelColor((j+1)*50-(i+20)%25, pixels.Color(r*25,g*25,b*25));
pixels.setPixelColor((j+1)*50-(i+19)%25, pixels.Color(r*20,g*20,b*20));
pixels.setPixelColor((j+1)*50-(i+18)%25, pixels.Color(r*15,g*15,b*15));
pixels.setPixelColor((j+1)*50-(i+17)%25, pixels.Color(r*10,g*10,b*10));
pixels.setPixelColor((j+1)*50-(i+16)%25, pixels.Color(r*5,g*5,b*5));
pixels.setPixelColor((j+1)*50-(i+15)%25, pixels.Color(r,g,b));
}
pixels.show();
delay(10);
}
}
for (k=0; k<10; k++) {
r = random(5);
g = random(5);
b = random(5);
for(i=0;i<25;i++) {
for (j=0;j<8;j++) {
pixels.setPixelColor(j*25+(i+25)%25, pixels.Color(r*50,g*50,b*50));
pixels.setPixelColor(j*25+(i+24)%25, pixels.Color(r*45,g*45,b*45));
pixels.setPixelColor(j*25+(i+23)%25, pixels.Color(r*40,g*40,b*40));
pixels.setPixelColor(j*25+(i+22)%25, pixels.Color(r*35,g*35,b*35));
pixels.setPixelColor(j*25+(i+21)%25, pixels.Color(r*30,g*30,b*30));
pixels.setPixelColor(j*25+(i+20)%25, pixels.Color(r*25,g*25,b*25));
pixels.setPixelColor(j*25+(i+19)%25, pixels.Color(r*20,g*20,b*20));
pixels.setPixelColor(j*25+(i+18)%25, pixels.Color(r*15,g*15,b*15));
pixels.setPixelColor(j*25+(i+17)%25, pixels.Color(r*10,g*10,b*10));
pixels.setPixelColor(j*25+(i+16)%25, pixels.Color(r*5,g*5,b*5));
pixels.setPixelColor(j*25+(i+15)%25, pixels.Color(r,g,b));
pixels.setPixelColor(j*25+(i+14)%25, pixels.Color(0,0,0));
}
pixels.show();
delay(10);
}
}
for(k=1; k<5; k++) {
r = random(5);
g = random(5);
b = random(5);
for(i=0;i<=50;i++) {
for(j=0;j<NUMPIXELS;j++) pixels.setPixelColor(j, pixels.Color(r*i,g*i,b*i));
pixels.show();
delay(2);
}
for(i=50;i>=0;i--) {
for(j=0;j<NUMPIXELS;j++) pixels.setPixelColor(j, pixels.Color(r*i,g*i,b*i));
pixels.show();
delay(2);
}
delay(50);
}
for(i=0;i<200;i++) {
for(j=0;j<NUMPIXELS;j++) pixels.setPixelColor(j, pixels.Color(((j+i)%50)*3,((j+i+17)%50)*3,((j+i+34)%50)*3));
pixels.show();
delay(40);
}
for (k=0; k<5; k++) {
for(i=0;i<NUMPIXELS;i++) {
for(j=0;j<NUMPIXELS;j++) {
if (i>j) pixels.setPixelColor(j, pixels.Color(k%5*40,k%3*50,k%7*30)); else pixels.setPixelColor(j, pixels.Color(0,0,0));
}
pixels.show();
}
for(i=0;i<NUMPIXELS;i++) {
for(j=0;j<NUMPIXELS;j++) {
if (i<j) pixels.setPixelColor(j, pixels.Color(k%5*40,k%3*50,k%7*30)); else pixels.setPixelColor(j, pixels.Color(0,0,0));
}
pixels.show();
}
}
for(i=0;i<500;i++) {
for (j=1;j<5;j++) pixels.setPixelColor(random(NUMPIXELS), pixels.Color(random(200),random(200),random(200)));
pixels.show();
for(j=0;j<NUMPIXELS;j++) pixels.setPixelColor(j, pixels.Color(0,0,0));
pixels.show();
}
QueueArray <int> queue;
for(i=0;i<50;i++) {
int t = random(NUMPIXELS);
queue.enqueue(t);
pixels.setPixelColor(t, pixels.Color(random(200),random(200),random(200)));
pixels.show();
delay(20);
}
for(i=0;i<300;i++) {
int t = random(NUMPIXELS);
queue.enqueue(t);
pixels.setPixelColor(t, pixels.Color(random(200),random(200),random(200)));
t = queue.dequeue();
pixels.setPixelColor(t, pixels.Color(0,0,0));
pixels.show();
delay(20);
}
}
Реализованные эффекты описывать не буду, они видны на видео.
Всех с Наступающим!
Самые обсуждаемые обзоры
+79 |
4369
153
|
+62 |
4522
75
|
Так и не спаял.
И в этот новый год тоже врядли использую. Намечается переезд в новую квартиру — не до пайки.
Ну, думаю — все, Новый год с иллюминацией будет.
Вчера пришла инфа от ПР — для доставки в Москву из внуковской таможни за полторы недели ардуина уехала в распределительный центр в Ярославле.
Внуково — км 10 от меня, Ярославль — км 250.
Я хочу курить ту же траву, что и ПР.
на самом деле, там — большой логистический центр; там кажется много контор базируется, типа Де Агостини, Озон(обвспоминался:)
В принципе, так во всём мире делается, только сроки доставки получаются другие, даже в пик «11.11-и-далее».
Ну, там и деньги другие вложены & зарабатываются на этом… И, — нельзя качественно улучшить что-то одно, не изменив всю систему.
(есть вариант ещё хуже — Т.Е.А-пост, оно «чайным путём» и едет, «Китай» у них кончается в Екб; Aslan54 однажды рассказывал, как и сколько к нему, «по соседству», ехал планшет)
Вроде для себя разобрался — косяк продавца, там и индекс в посылке не мой и имя чужое, неправославное.
Открыл спор, ибо именно этот трек мне не подержать в руках никогда — докУментов нету.
А TEApost уже чувствую на себе — пара посылок уже недели три как прошли таможню в Е-бурге. пока все, что могу про это рассказать. Может в следующем году будет продолжение??
Хорошо еще, что параллельно голых ардуинок пару штук заказал и одна из них пришла. С нуля, чайником, заставил светиться ленту часа за три.
А у меня планы были еще с датчиками поиграться, моторчиком пожужжать и вообще… просто абыдна.
Чо ж теперь, 10 дней тупо пить, глядя на ленту?
Квадрокоптеры, вон, и самолетики без проблем зимой летают, главное до старта батарейку в тепле держать.
Как на Ваш взгляд?
Но если на открытом воздухе пользоваться, то это не страшно, да и он быстрее выдохнется.
Но не известно, сколько этот компаунд (смола?) проживёт в уличных условиях. Но если вешать не на весь год, то, думаю, надолго.
на 0,5....0,7 в. Цепь контроля можно проследить от оптрона.
ru.aliexpress.com/item/free-shipping-DC5V-ws2812-white-black-4-pin-Board-individually-addressable-RGB-full-color-ws2812b-led/32709957635.html
А что до обозреваемой гирлянды — это уже, наверное, «далекое прошлое». Поскольку там отдельно WS2811 и обычный четырехвыводный RGB-светодиод. А уже кроме SMDшного WS2812 с интегрированным контроллером есть и «трухольные» — обычный с виду тоже четырехвыводный 5-mm (есть и 8 mm) светодиод — но опять же со встроенным контроллером.
https://aliexpress.com/item/item/1m-4m-5m-WS2812B-Smart-led-pixel-strip-Black-White-PCB-30-60-144-leds-m/2036819167.html
www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/
у меня только водозащищенная лента по 3 диода в канале и 50 каналов, с балкона светит очень ярко, выключаю ее как спать ложусь, а то отсвечивает от потолка балкона и бьет по глазам
с улицы смотрится круче всех гирлянд
github.com/kitesurfer1404/WS2812FX
LED_COUNT — количество диодов
LED_PIN — к какому выводу подключаем гирлянду
FX_MODE_RAINBOW_CYCLE — название режима. Все режимы перечислены в WS2812FX.h. Можно ставить число от 0 до 44.
Компиляция и заливка — стандартные для Ардуины.
Дальше можно лепить кнопки регулировки скорости и переключения режимами
Проще уж библиотеку из предыдущего комментария попробовать.
В этом году уже третий раз вывешивать буду.
Могу только пожелать, раз уж знакогенератор загружен, кроме поздравления другую полезную инфу выводить. Текущее время. Температуру за бортом.
Т.к. не программист, то простые эффекты-то забацал, а вот бегущую строку, всякие волны — нет.
По-богатому, красиво. Какое общее количество светодиодов?
Вот например есть лот (50 шт./лот) DC5V 1903/WS2811/P9813/LPD6803/WS2801IC вообще запутался.
Буду благодарен за помощь :)
А что у них используется в виде диода? Какой тип?
На фотографиях в обзоре пипка это и есть диод, торчащий примерно на половину.
Из эстетических соображений лучше было бы украсить низкое дерево рядом. Вроде это настоящая ёлка? А то светодиодов маловато и они выглядят на дереве не айс. Лучший вариант — когда все перемигиваются хаотично.
Я почему-то так и думал, что в этом дело;) Но для меня, например самое главное это я сам;)
Зря не посадили рядом такую же низкую тую (и обе низкие поближе) — выглядело бы зело провокативным перфомансом;)
www.youtube.com/shared?ci=sW8DJ65yHKw
Да и контроллер есть готовый, от 20 долларов. Любые эффекты, любая графика и видео. И без навыков программирования.
И куда его?
А вообще кто мешает попробовать? Arduino IDE для ESP8266 вроде есть.
mysku.club/blog/aliexpress/47920.html#comment1796632
Она заявлена как совместимая с ESP8266.
1. Управляющее напряжение должно совпадать с питающим, т.е. для отладки вполне реально запитывать отрезок из 4-5 диодов от ЕСПшки и управлять им без костылей. Иначе вариант только один — через согласование уровней, именно так у меня работала 2-метровая лента.
2. Если управлять без согласования уровней, то у меня лично наблюдался такой баг — первый диод в ленте не реагирует на управление (или белое свечение, или хаотичное мерцание), но остальная лента воспринимает его нормально.
3. Земля у ЕСП и питания ленты должна быть общая, это обязательно.
Использовал библиотеку NeoPixel для управления лентой ws2813 или светодиодами APA106 F8
Мерцание первого диода можно победить 300-500 Ом резистором между дата-пином и первым диодом (при чем как можно ближе к самому диоду).
Делал, работает. Для работы нужно настроить среду ардуино для работы с есп8266, инструкция есть на есп8266.ру
Далее нужно загрузить библиотеку fastled(или любую на ваш вкус типа neopixel)
Примеры из библиотек работают без допила. Соединять компоненты нужно как описано ниже: общая земля, можно установить сопротивление на data gpio, чтобы не портить первый светодиод. Уровни я не согласовывал, работает и так.
Мне понравился вариант с blynk(инструкция как настроить там же на есп8266.ру). Так же ничего сложного, однако, контроллер иногда зависает от большого количества запросов.
Вот готовый скетч с blynk: community.blynk.cc/t/esp8266-fastled-blynk-smart-shelf-video/7333