// 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);
}
}
+17 |
3575
100
|
Так и не спаял.
И в этот новый год тоже врядли использую. Намечается переезд в новую квартиру — не до пайки.
Ну, думаю — все, Новый год с иллюминацией будет.
Вчера пришла инфа от ПР — для доставки в Москву из внуковской таможни за полторы недели ардуина уехала в распределительный центр в Ярославле.
Внуково — км 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) светодиод — но опять же со встроенным контроллером.
aliexpress.com/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.me/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