Ring neopixel кольцо

Джоник

✩✩✩✩✩✩✩
4 Мар 2020
34
0
Доброго времени суток, уважаемые форумчане! Купил себе сие "устройство" (а именно кольца NEO Pixel, комплект 9 штук, все можно разделить по отдельности)). но столкнулся с проблемой, что нигде не могу найти нормальные скетчи с эффектами. максимум, чего смог добиться, это радужное сияние 3 от центра круга. один эффект по всему интернету... Натыкался на видео на ютубе, где не русские блогеры демонстрировали эффекты, но никаких ссылок по дидео и в комментах не было... на руках имею ардуины нано, Wemos D1 мини, Node MCU (брал для огненного светильника). Собственно, о чем вопрос: как можно спаять, запитать все кольца и и вдохнуть жизнь в это? если веткой ошибся, то направьте в нужную... я в этом деле дилетант, но лампу собрал.
GqlQ1U3wUHk.jpgZhiQSW0jHtE.jpg
 

bort707

★★★★★★✩
21 Сен 2020
3,058
910
Я правильно тебя понял?
неправильно, у тебя все D-in соединены сплошняком.
А надо так - от ардуины на D-in первого кольца, D-out первого кольца - на D-in второго и так далее
Посмотри как отрезки ленты соединяют - тут так же
 

bort707

★★★★★★✩
21 Сен 2020
3,058
910
Тут главное нужна фантазия. чтоб эффекты интересные придумать (или найти)
А с точки зрения программирования эти кольца ничем не отличаются от ленты.
 

Джоник

✩✩✩✩✩✩✩
4 Мар 2020
34
0
фантазии навалом, уже придумал, и в голове уже есть готовая сборка, и как оно будет светить, но в плане реализации-проблемы...
 

bort707

★★★★★★✩
21 Сен 2020
3,058
910
фантазии навалом, уже придумал, и в голове уже есть готовая сборка, и как оно будет светить,, но в плане реализации-проблемы...
Искренне завидую, у меня ровно наоборот...

ну так делись - как оно светить должно - скажу, легко это сделать или нет
 

Джоник

✩✩✩✩✩✩✩
4 Мар 2020
34
0
Ну я так, просто перечислю, что хотелось бы:
Переход от центра до крайнего кольца, одним цветом, и разными цветами.
Такой же переход от крайнего к центру.
Рандомное мерцание рандомного светодиода рандомным цветом.
Зацикленное заполнение цветом по спирали.
Эффект трубы, как гипнокруг тоже разными цветами.
Просто чтобы один сплошной цвет горел.
Радужное мерцание по кругу, всех кругов.
Волна от центра до крайнего кольца.
Один светодиод бегает по кругу по спирали.
В общем я могу до вечера перечислять)
 

bort707

★★★★★★✩
21 Сен 2020
3,058
910
"эффект трубы" на жестко закрепленных кругах скорей всего не получится, все остальное не сложно
Начни с "один светодиод бегает по кругу по спирали " - это пишется ровно так же, как бегающий огонек по ленте - примеров в инете море
 

Джоник

✩✩✩✩✩✩✩
4 Мар 2020
34
0
@bort707, ну, эффект как просто через один круг они горят.
А начать я смогу, знай я хоть немного того, что пишут в скетчах... Я не понимаю коды.
 

bort707

★★★★★★✩
21 Сен 2020
3,058
910
знай я хоть немного того, что пишут в скетчах... Я не понимаю коды.
я тоже когда-то не знал и не понимал... но ведь узнал же.
Для этого надо начать с чего-то простенького. Бегающий по ленте огонек - вот именно оно самое - простенькое.

Другой вариант - это обратится в раздел проектов, тебе напишут за деньги. Но это же не интересно...
 

Джоник

✩✩✩✩✩✩✩
4 Мар 2020
34
0
@bort707, для меня интересно, но там просят за это какие то нереальные деньги...
Тогда вытекающий вопрос: если лента одна, один контакт Din, то там понятно, что можно в теории запустить огонек от начала к концу, зациклить его. То тут у меня 9 инов и 9 аутов... Я этот момент не могу даже прикинуть, даже просто представить ,как сделать. Э

@bort707, вот если взять кольцо, и пустить по нему огонек, он будет бежать от Дин к Даут. А логически д аут это конец кольца? И ещё, я пытался править готовый скетч, где радужное сияние. Я не понял куда и что нажимать, максимум , что я увидел, это изменить количество светодиодов. И русские коменты, коряво переведенные. Это второй раз, когда я в принципе смотрю на код...
 

bort707

★★★★★★✩
21 Сен 2020
3,058
910
если лента одна, один контакт Din, то там понятно, что можно в теории запустить огонек от начала к концу, зациклить его. То тут у меня 9 инов и 9 аутов...
так мы же с тобой все эти круги соединили последовательно. Теперь они как будто одна длинная лента, но сложенная в спираль.
если взять кольцо, и пустить по нему огонек, он будет бежать от Дин к Даут.
правильно. А раз мы кольца все соединили - то когда огонек добежит до Даут первого кольца - он перескочит на Дин второго... и так далее до последнего
Это второй раз, когда я в принципе смотрю на код...
ну я четсно - не знаю, что тут посоветовать. Других вариантов, кроме сесть и читать учебник - я не знаю, я так учился
 
  • Лойс +1
Реакции: Джоник

Джоник

✩✩✩✩✩✩✩
4 Мар 2020
34
0
#include <Adafruit_NeoPixel.h>
#define PIN 6
#define count_led 12 // количество светодиодов
Adafruit_NeoPixel strip = Adafruit_NeoPixel(count_led, PIN, NEO_GRB + NEO_KHZ800); //указываем количество задействованых светодиодов

void setup() {
strip.begin();
strip.show(); //выключаем все пиксели
}
void loop() {
rainbowCycle(1); // настройка скорости анимации 1-быстро 10-медленно
}
// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}
// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
for(i=0; i< strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
}
strip.show();
delay(wait);
}
}
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
if(WheelPos < 85) {
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} else if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}

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

bort707

★★★★★★✩
21 Сен 2020
3,058
910
так радуга - весьма непростой эффект, что ж ты сразу за сложное хватаешься
вот тебе постепенное заполнение твоих колец зеленым светом:
C++:
#include <Adafruit_NeoPixel.h>
//пин для ленты
#define PIN        6 

// число пикселей - сюда записать сколько всего светиков на всех кольцах в сумме
#define NUMPIXELS 16 

// задержка зажигания между пикселями
#define DELAYVAL 100

void setup() {
 pixels.begin(); 
}

void loop() {
  pixels.clear(); 
  for(int i=0; i<NUMPIXELS; i++) { 
    pixels.setPixelColor(i, pixels.Color(0, 150, 0));
    pixels.show();   
    delay(DELAYVAL); // Pause 
  }
}
сравни насколько этот код короче и проще
 

xof

★✩✩✩✩✩✩
24 Окт 2020
123
44
Начни с простого - зажги каждый диод светом. Тогда будет яснее что да как.
C++:
#include <Adafruit_NeoPixel.h>
#define PIN        6 // пин колец
#define NUMPIXELS 16 // общее количество модулей на всех кольцах
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixels.begin(); // инициализация
  pixels.clear(); // очищаем всё

  for (int i = 0; i < NUMPIXELS; i++) { // для каждого диодика
    pixels.setPixelColor(i, pixels.Color(0, 150, 0)); //i это порядковый номер диода, дальше цвет в rgb
    pixels.show();   // показываем изменения что сделали
    delay(500); // ждём перед тем как зажечь следующий
  }
}
void loop() {
}
 

Джоник

✩✩✩✩✩✩✩
4 Мар 2020
34
0
@bort707, Я все припаял, долго правда. теперь встал вопрос как подключить плату, поправьте меня, пожалуйста, я сделал по наитию... Но, если питание на круг подается от ардуино, то от контакта 5V на плате мы подаем на круг. А если питание внешнее, то плюс приходит от блока питания на нижний правый контакт VIN и параллельно на круг? я запутался
scheme.jpg
 

Джоник

✩✩✩✩✩✩✩
4 Мар 2020
34
0
так радуга - весьма непростой эффект, что ж ты сразу за сложное хватаешься
вот тебе постепенное заполнение твоих колец зеленым светом:
C++:
#include <Adafruit_NeoPixel.h>
//пин для ленты
#define PIN        6

// число пикселей - сюда записать сколько всего светиков на всех кольцах в сумме
#define NUMPIXELS 16

// задержка зажигания между пикселями
#define DELAYVAL 100

void setup() {
pixels.begin();
}

void loop() {
  pixels.clear();
  for(int i=0; i<NUMPIXELS; i++) {
    pixels.setPixelColor(i, pixels.Color(0, 150, 0));
    pixels.show();  
    delay(DELAYVAL); // Pause
  }
}
сравни насколько этот код короче и проще

не очень получилось... выдало вот что...
pixels.clear();
^~~~~~
H:\arduino project\neo pixel\bt\BT_RGB\BT_RGB.ino:16:3: note: suggested alternative: 'yield'
pixels.clear();
^~~~~~
yield
exit status 1
'pixels' was not declared in this scope
 

Джоник

✩✩✩✩✩✩✩
4 Мар 2020
34
0
Начни с простого - зажги каждый диод светом. Тогда будет яснее что да как.
C++:
#include <Adafruit_NeoPixel.h>
#define PIN        6 // пин колец
#define NUMPIXELS 241 // общее количество модулей на всех кольцах
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixels.begin(); // инициализация
  pixels.clear(); // очищаем всё

  for (int i = 0; i < NUMPIXELS; i++) { // для каждого диодика
    pixels.setPixelColor(i, pixels.Color(0, 150, 0)); //i это порядковый номер диода, дальше цвет в rgb
    pixels.show();   // показываем изменения что сделали
    delay(500); // ждём перед тем как зажечь следующий
  }
}
void loop() {
}

здесь получилось, но загорелся только один центральный пиксель, где один светодиод.
и теперь подробнее: "i это порядковый номер диода" откуда начинать счет? от первого центрального? где один светодиод?
neopixel-ring-01-800x800.jpg

for (int i = 0; i < NUMPIXELS; i++) пробовал менять 0 на другие числа - нет результата...