Управление WS2812B

shaamn
Offline
Зарегистрирован: 07.07.2013

Доброго времени суток!

Заранее отмечу, что я знаю о существовании библиотек для управления данным чипом, но...

Вот решил поуправлять светодиодной лентой с данным чипом, с использованием библиотеки проблем нет, и появилось желание управлять без библиотеки. Вроде всё придельно ясно, но так ничего и не получилось. Прошу помощи в программировании!

MaksMS
Offline
Зарегистрирован: 11.03.2013

А зачем управлять без библиотеки ? Ну возмите код из библиотеки тогда и вставте в листинг программы

shaamn
Offline
Зарегистрирован: 07.07.2013

Это то понятно, но т.к. этим делом занимаюсь недавно, считаю, что научиться самостоятельно отсылать посылки (не важно кому, ведь многие девайсы работают именно по данной схеме) дело полезное!

Nutsmb
Offline
Зарегистрирован: 10.10.2014

Возможно, поможет данная статья: http://habrahabr.ru/post/200200/

shaamn
Offline
Зарегистрирован: 07.07.2013

Спасибо, конечно, за попытку помощи, но статья не в ту степь...

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

ggarry
Offline
Зарегистрирован: 21.01.2016

Привет! Тема очень древняя, более свежей информации, увы, не нашел.

Творю на Attiny13A в среде Arduino небольшой проэктик и есть необходимость вывести визуальную информацию через одну ножку. WS2812 самое оно, но ни одна библиотека в Тиньку не лезет. Как в скетче сделать вывод на WS2812? 

Спасибо за внимание и понимание.

romster
Offline
Зарегистрирован: 15.04.2013

сколько стоит Ваша тинька ? если nano на 328 проце стоит ~ 14О рэ с доставкой скорее всего в почтовый ящик, так как пакет будет тонкий и легко пролезет.

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

romster
Offline
Зарегистрирован: 15.04.2013

у меня вот тоже созрел вопрос для этой темы, есть потребность управлять 6ОО диодами ws2812b, UNO не сможет их "прокачать" ? а на MEGA2560 ?

sadman41
Offline
Зарегистрирован: 19.10.2016

romster пишет:

у меня вот тоже созрел вопрос для этой темы, есть потребность управлять 6ОО диодами ws2812b, UNO не сможет их "прокачать" ? а на MEGA2560 ?

https://github.com/FastLED/FastLED/issues/288#issuecomment-208968347

...

  • Uno/Leonardo/micro/nano : I don't go above 512 LEDs ( 1.5kByte of SRAM reserved for LEDs ),
  • Mega : Ive done 1000 LEDs but not with many other things happening. ( 3 kByte of SRAM reserved for LEDs )
  • DUE/ Zero : quite a lot of LEDs ( multiple controller examples ) never more than 1000 per "FASTLED controller" to keep framerate above 30.

...

Естественно - всё зависит от того, через что вы ими дергать  будете и как задавать цвета.

Logik
Offline
Зарегистрирован: 05.08.2014

ggarry пишет:

Привет! Тема очень древняя, более свежей информации, увы, не нашел.

Творю на Attiny13A в среде Arduino небольшой проэктик и есть необходимость вывести визуальную информацию через одну ножку. WS2812 самое оно, но ни одна библиотека в Тиньку не лезет. Как в скетче сделать вывод на WS2812? 

Спасибо за внимание и понимание.

Без ассемблера никак. Я писал для 328, может и на тиньку полезет, лежит здесь

http://arduino.ru/forum/proekty/pokhvalimsya-khudozhestvennoi-samodeyate...

ggarry
Offline
Зарегистрирован: 21.01.2016

Нужно сделать на именно тиньке13, осталась половина памяти и свободная нога. Таймер во время вывода индикации освобождается. Хочу красивое и изящное решение. Нужно менять цвет всего лишь двух индикаторов. Есть готовое решение с подключением второй тиньки но хочется чтобы было красиво. 328 не рассматривается, там я бы с такими вопросами не обращался. есть еще проблемка, тактовая 4.8 онли. Вот тут, боюсь, будет основной затык с работой с ws2812.

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Тут вот залепили 2812 в вашу тиньку: http://samopal.pro/ws2812-attiny13a/

Взяли бы 2801 и горя не знали. Только не знаю - в малом формате они выпускаются или нет.

ggarry
Offline
Зарегистрирован: 21.01.2016

Есть замечательный проект по моей теме на  АВ. Тут, но языком по ихнему не владею. Изучаю помаленьку.

romster
Offline
Зарегистрирован: 15.04.2013

управлять думаю glediator`ом есть даже mega2560 но думаю смогла бы и стм32 f103

с Mega2560 пока проблема, на ней не распаяна перемычка reset-en и светодиоды не светятся вообще, не понятно, что ей еще нужно ?

ggarry
Offline
Зарегистрирован: 21.01.2016

Помогла замечательная библиотека light_ws2812 , лезет во все тиньки и меги.

romster
Offline
Зарегистрирован: 15.04.2013

у кого тоже RobotDyn mega 2560 r3 на CH340, на ней нету reset-en, я так понял, что эта перемычка нужна для перезагрузки контроллера при подключении к терминалу ?

romster
Offline
Зарегистрирован: 15.04.2013

у кого тоже RobotDyn mega 2560 r3 на CH340, на ней нету reset-en, я так понял, что эта перемычка нужна для перезагрузки контроллера при подключении к терминалу ?

Решена проблема с запуском WS2812b на Mega2560, значит если нет перемычки reset-en, как на полате выше, то для успешного запуска достаточно установить конденсатор 22мкф между gnd и reset. Но если вы решите загрузить скетч, то перед этим конденсатор нужно убрать.

и вот код:


//##############################################################################
//##############################################################################
//                                                                             #
// Glediator to WS2812 pixel converter                                         #
// by R. Heller                                                                #
// V 1.0 - 07.01.2014                                                          #            
// wwww.SolderLab.de                                                           #
//                                                                             #
// Receives serial data in Glediator protocol format @ 1 MBit/s                #
// and distributes it to a connectect chain of WS2812 pixels                   #
//                                                                             #
// Adjust the correct DATA PIN and the correct NUMBER OF PIXELS you are using  #
// in the definitions section below before uploading this sketch to your       #
// Arduino device.                                                             #
//                                                                             #
// MEGA2560 Maxiumim number of supported pixeles > 512 !!!                             #
//                                                                             #
// In the Glediator software set output mode to "Glediator_Protocol",          #
// color order to "GRB" and baud rate to "1000000"                             #
//                                                                             #
//##############################################################################
//##############################################################################

#define DATA_PORT          PORTA
#define DATA_DDR           DDRA
#define DATA_PIN           0 //This relates to PDA0 (PIN 22 on the Mega 2560)
#define NUMBER_OF_PIXELS   900


//##############################################################################
//                                                                             #
// Variables                                                                   #
//                                                                             #
//##############################################################################

unsigned char display_buffer[NUMBER_OF_PIXELS * 3];
static unsigned char *ptr;
static unsigned int pos = 0;

boolean go = 0;


//##############################################################################
//                                                                             #
// Setup                                                                       #
//                                                                             #
//##############################################################################

void setup()
{
  // Set data pin as output
  DATA_DDR |= (1<<DATA_PIN);

  
  // Initialize UART
  UCSR0A |= (1<<U2X0);                                
  UCSR0B |= (1<<RXEN0)  | (1<<TXEN0) | (1<<RXCIE0);  
  UCSR0C |= (1<<UCSZ01) | (1<<UCSZ00)             ;
  UBRR0H = 0;
  UBRR0L = 1; //Baud Rate 1 MBit (at F_CPU = 16MHz)
  
  ptr=display_buffer;
  
  //Enable global interrupts
  sei();
}


//##############################################################################
//                                                                             #
// Main loop                                                                   #
//                                                                             #
//##############################################################################

void loop()
{  
  if (go==1)
  {
    cli();
    ws2812_sendarray(display_buffer, NUMBER_OF_PIXELS * 3);
    sei();
    go=0;
  }
}


//##############################################################################
//                                                                             #
// UART-Interrupt-Prozedur (called every time one byte is compeltely received) #
//                                                                             #
//##############################################################################

ISR(USART0_RX_vect)
{
  unsigned char b;
  b=UDR0;
  
  if (b == 1)  {pos=0; ptr=display_buffer; return;}    
  if (pos == (NUMBER_OF_PIXELS*3)) {} else {*ptr=b; ptr++; pos++;}  
  if (pos == ((NUMBER_OF_PIXELS*3)-1)) {go=1;}
}


//##############################################################################
//                                                                             #
// WS2812 output routine                                                       #
// Extracted from a ligh weight WS2812 lib by Tim (cpldcpu@gmail.com)          #
// Found on wwww.microcontroller.net                                           #
// Requires F_CPU = 16MHz                                                      #
//                                                                             #
//##############################################################################

void ws2812_sendarray(uint8_t *data,uint16_t datlen)
{
  uint8_t curbyte,ctr,masklo;
  uint8_t maskhi = _BV(DATA_PIN);
  masklo =~ maskhi & DATA_PORT;
  maskhi |= DATA_PORT;

  while (datlen--)
  {
    curbyte = *data++;

    asm volatile
    (
      " ldi %0,8 \n\t" // 0
      "loop%=:out %2, %3 \n\t" // 1
      "lsl %1 \n\t" // 2
      "dec %0 \n\t" // 3
      " rjmp .+0 \n\t" // 5
      " brcs .+2 \n\t" // 6l / 7h
      " out %2,%4 \n\t" // 7l / -
      " rjmp .+0 \n\t" // 9
      " nop \n\t" // 10
      " out %2,%4 \n\t" // 11
      " breq end%= \n\t" // 12      nt. 13 taken
      " rjmp .+0 \n\t" // 14
      " rjmp .+0 \n\t" // 16
      " rjmp .+0 \n\t" // 18
      " rjmp loop%= \n\t" // 20
      "end%=: \n\t"
      : "=&d" (ctr)
      : "r" (curbyte), "I" (_SFR_IO_ADDR(DATA_PORT)), "r" (maskhi), "r" (masklo)
    );
  }

}


//##############################################################################
//                                                                             #
// End of program                                                              #
//                                                                             #
//##############################################################################

 

arduinec
Offline
Зарегистрирован: 01.09.2015

romster пишет:

у меня вот тоже созрел вопрос для этой темы, есть потребность управлять 6ОО диодами ws2812b, UNO не сможет их "прокачать" ? а на MEGA2560 ?

Стандартные библиотеки для WS2812 используют по 3 байта на 1 светодиод, поэтому с помощью них Arduino Uno/Nano может управлять только 500 светодиодами.

Но количество градаций цвета можно уменьшить: до 5 бит например - тогда на 1 светодиод будет расходоваться 2 байта и Arduino Uno/Nano будет управлять 750 светодиодами.

Ну а если на цвет задействовать только 1 бит (включен-выключен), то есть на 1 светодиод всего 3 бита, тогда Arduino Uno/Nano и с 3000 светодидов справиться.

sadman41
Offline
Зарегистрирован: 19.10.2016

Можно и до трех байт, просто при выводе дуплить предется: #ABC => #AABBCC. Эконом-вариант, который человеку записывать удобно.

Logik
Offline
Зарегистрирован: 05.08.2014

Ну шо вы это как я не знаю кто! Сохраняем для каждого светодиода индекс цвета - 1 байт, для каждого индекса цвета таблица перекодировки в RGB. Таблиц можна несколько иметь, они во флеше. Можем получить любой возможный цвет, но одновременно имеем 256 цветов на ленте и тысячи полторы светодиодов при простой реализации. только вот нахрена?

arduinec
Offline
Зарегистрирован: 01.09.2015

sadman41 пишет:

Можно и до трех байт, просто при выводе дуплить предется: #ABC => #AABBCC. Эконом-вариант, который человеку записывать удобно.

Не понял к чему относится "дуплить"?

Вне зависимости от того, как обрабатываются данные в Ардуине, чипу WS2812 (и ему подобным) нужно отправить 24 бита. Для 5-битовой кодировки цвета отправляется код из 5 значимых битов, а далее 3 нуля или 3 единицы - и так для каждого цвета. Для 1-битовой кодировки соотвественно будет отправляться 8 нулей или 8 единиц для каждого цвета.

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

Примеры бегущей строки (управление по одному пину):
8 битов на цвет (3 байта на светодиод): https://yadi.sk/i/KjPlzioNjskYL
5 битов на цвет (2 байта на светодиод): https://yadi.sk/i/RzuRDpZkkK32s
 

sadman41
Offline
Зарегистрирован: 19.10.2016

arduinec пишет:

Не понял к чему относится "дуплить"?

Переработал слегонца, реальные байты не посчитал.

Была у меня задачка по передаче массива цветов для пиксельной ленты так, чтобы человек мог их в текстовом редакторе записать и потом быстро отредактировать. Хранение в виде 3-символьной hex-строки оказалось оптимальной (HTML style). Только на выводе в ленту нужно было ниббл удваивать. В реальных-то байтах, конечно, расход один и тот же - 4 бита хранить или 8.

romster
Offline
Зарегистрирован: 15.04.2013

ух, понаписали сколько мыслей-то, отлично, спасибо и + в карму, буду смотреть где там градации цвета убавить, но всеж думаю на стм32f103 все переложить бы, там с оперой проблем нету. 

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Граждане-господа, помогите подскажите.

Соединила 100 штук Ws2812B в матрицу(змейкой), как на рисунке

"Нарисовала" картинку, для примера.

Код ардуино такой:

#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel strip = Adafruit_NeoPixel(100, 6, NEO_GRB + NEO_KHZ800);
static uint32_t img[100] = { 
0x000000,0x000000,0xFF0000,0xFF0000,0xFF0000,0xFF0000,0xFF0000,0xFF0000,0x000000,0x000000,                                           
0x000000,0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0xFF0000,0x000000,                                            
0xFF0000,0x000000,0x000000,0x000000,0xFFD800,0x000000,0x0026FF,0x0026FF,0x000000,0xFF0000,                                            
0xFF0000,0x000000,0x0026FF,0x0026FF,0x000000,0x000000,0xFFD800,0x000000,0x000000,0xFF0000,                                            
0xFF0000,0x000000,0xFFD800,0xFFD800,0x000000,0x000000,0x000000,0x000000,0x000000,0xFF0000,                                            
0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0xFFD800,0xFFD800,0x000000,0xFF0000,                                            
0xFF0000,0x000000,0x000000,0xFFD800,0x000000,0x000000,0x0026FF,0x0026FF,0x000000,0xFF0000,                                            
0xFF0000,0x000000,0x0026FF,0x0026FF,0x000000,0xFFD800,0x000000,0x000000,0x000000,0xFF0000,                                            
0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0xFF0000,0x000000,                                            
0x000000,0x000000,0xFF0000,0xFF0000,0xFF0000,0xFF0000,0xFF0000,0xFF0000,0xFF0000,0x000000                                            
};


void setup() {
strip.begin();
strip.show(); 
strip.setBrightness(127);
}




void loop() { 
for (byte i=0; i<100; i++)
{
strip.setPixelColor(i,img[i]);
}
strip.show();
}

 

Как мне, не рисуя новых кадров, сдвигать картинку справа налево, как текстовая бегкщая строка?

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

встречный вопрос - а сдвигая влево - в правом столбце что должно быть? 

если пусто то просто каждый байт сдвигаете на 1 бит влево при вываде построчно,

при вашем выводе змейкой начинать отсчет не от 0, а от 19, соотвественно последние байты нулем заполнить

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel strip = Adafruit_NeoPixel(100, 6, NEO_GRB + NEO_KHZ800);

static uint32_t img[100] = { 
0xFF0000,0xFF0000,0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,                                            
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,                                            
0x0026FF,0x0026FF,0x0026FF,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,                                            
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,                                            
0xFFD800,0xFFD800,0xFFD800,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,                                            
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,                                            
0xFF0000,0xFF0000,0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,                                            
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,                                            
0x0026FF,0x0026FF,0x0026FF,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,                                            
0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,                                            
};
int k=0;

void setup() {
strip.begin();
strip.show(); 
strip.setBrightness(127);
}

void loop() { 
for (k=0; k<100; k=k+10){
for (byte i=0; i<100-k; i++)
{
strip.setPixelColor(i,img[i+k]);
}
strip.show(); 
delay(3000);
}
}

Одно НО, из-за того что диоды подключены хмейкой, один кадр получается зеркальным, как это исправить?

Irinka
Irinka аватар
Offline
Зарегистрирован: 28.06.2017

Сделала вот так

#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel strip = Adafruit_NeoPixel(100, 6, NEO_GRB + NEO_KHZ800);

static uint32_t img0[10] = {0xFF0000,0xFF0000,0xFF0000,0xFF0000,0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,};                                             
static uint32_t img1[10] = {0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,};                                            
static uint32_t img2[10] = {0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,};                                            
static uint32_t img3[10] = {0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,};                                            
static uint32_t img4[10] = {0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,};                                            
static uint32_t img5[10] = {0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,};                                            
static uint32_t img6[10] = {0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,};                                            
static uint32_t img7[10] = {0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,};                                            
static uint32_t img8[10] = {0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,0x000000,};                                            
static uint32_t img9[10] = {0xFF0000,0xFF0000,0xFF0000,0xFF0000,0xFF0000,0x000000,0x000000,0x000000,0x000000,0x000000,};                                            
                                          
                                           
                                          
int a9[] = {9,10,29,30,49,50,69,70,89,90};
int a8[] = {8,11,28,31,48,51,68,71,88,91};
int a7[] = {7,12,27,32,47,52,67,72,87,92};
int a6[] = {6,13,26,33,46,53,66,73,86,93};
int a5[] = {5,14,25,34,45,54,65,74,85,94};
int a4[] = {4,15,24,35,44,55,64,75,84,95};
int a3[] = {3,16,23,36,43,56,63,76,83,96};
int a2[] = {2,17,22,37,42,57,62,77,82,97};
int a1[] = {1,18,21,38,41,58,61,78,81,98};
int a0[] = {0,19,20,39,40,59,60,79,80,99};

int h=0;

void setup() {
strip.begin();
strip.show(); 
strip.setBrightness(127);

}




void loop() { 
for (int k=0; k<10; k++){
for (byte i=0; i<10; i++)
{
h=i+k;  
strip.setPixelColor(a0[i],img0[h]);
strip.setPixelColor(a1[i],img1[h]);
strip.setPixelColor(a2[i],img2[h]);
strip.setPixelColor(a3[i],img3[h]);
strip.setPixelColor(a4[i],img4[h]);
strip.setPixelColor(a5[i],img5[h]);
strip.setPixelColor(a6[i],img6[h]);
strip.setPixelColor(a7[i],img7[h]);
strip.setPixelColor(a8[i],img8[h]);
strip.setPixelColor(a9[i],img9[h]);
}
strip.show(); 
delay(3000);
}
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Irinka пишет:

Соединила 100 штук Ws2812B в матрицу(змейкой), 

..............

один кадр получается зеркальным, как это исправить?

..............

Сделала вот так

ulis
ulis аватар
Offline
Зарегистрирован: 09.03.2011

ЕвгенийП пишет:

You can leave your hat on (Joe Cocker) Хм ... 

Na4Fin
Offline
Зарегистрирован: 20.12.2017

Добрый день! Сильно не пинайте, я очень начинающий, даже диодом не мигал, сразу в WS2812 полез. Есть библиотека WS2812FX, в ней типовой пример перебора всех 54 эффектов по очереди, выглядит вот так :

#include <WS2812FX.h>
 
#define LED_COUNT 13
#define LED_PIN 11
 
#define TIMER_MS 5000
 
WS2812FX ws2812fx = WS2812FX(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800);
 
unsigned long last_change = 0;
unsigned long now = 0;
 
void setup() {
  ws2812fx.init();
  ws2812fx.setBrightness(255);
  ws2812fx.setSpeed(200);
  ws2812fx.setColor(0x007BFF);
  ws2812fx.setMode(FX_MODE_STATIC);
  ws2812fx.start();
}
 
void loop() {
  now = millis();
 
  ws2812fx.service();
 
  if(now - last_change > TIMER_MS) {
    ws2812fx.setMode((ws2812fx.getMode() + 1) % ws2812fx.getModeCount());
    last_change = now;
  }
}
 
мне требуется исключить из показа "вырвиглазные" эффекты, типа строба и перемигиваний, они очень раздражают глаза. Я насобирал 24 эффекта, и хотел сделать их круговой оборот по циклу, желательно с использованием random (в случайном порядке). Но победить присвоение эффектам номеров и их использование в random не получилось, а вышла вот такая шняга (она работает, но это один сплошной костыль):
(все, что до цикла, пропускаю, там одно и то же)
 
void loop() {
  now = millis();
 
  ws2812fx.service();
 
  if(now - last_change > TIMER_MS) {
    ws2812fx.setMode(FX_MODE_COLOR_WIPE_REV);
    last_change = now;
   }
   now = millis();
 
  ws2812fx.service();
 
  if(now - last_change > TIMER_MS) {
    ws2812fx.setMode(FX_MODE_TWINKLE_FADE_RANDOM);
    last_change = now;
   }
   now = millis();
 
  ws2812fx.service();
 
  if(now - last_change > TIMER_MS) {
    ws2812fx.setMode(FX_MODE_RAINBOW_CYCLE);
    last_change = now;
   }
   .... и дальше портянка для всех 24 эффектов. Это работает, но это не правильно, подскажите более изящный способ, пожалуйста.

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Наиболее изящный способ: 

http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...

sadman41
Offline
Зарегистрирован: 19.10.2016

Через enum, например. Или через массив. Создаете массив из 24 элементов, в каждый суете обозначение своего эффекта (там же обычные числа через define определены) . Потом по random(24) выдергиваете нужный элемент и суете его значение в setMode();

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Na4Fin пишет:

Добрый день!

Здравствуйте!

Na4Fin пишет:

Сильно не пинайте

С чего бы?

Na4Fin пишет:

даже диодом не мигал, сразу в WS2812 полез.

Как говорилось в известном фильме: "Ну, и дура"

Na4Fin пишет:

выглядит вот так :

Да, нет, дорогой, он выглядт вот так

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

 

Na4Fin
Offline
Зарегистрирован: 20.12.2017

Всем спасибо за науку. Ответ, в принципе, получен, если будут еще вопросы - обращусь "по-правильному". А то ишь, залез тут в песочницу, не зная правил... 

bwn
Offline
Зарегистрирован: 25.08.2014

Na4Fin пишет:

Всем спасибо за науку. Ответ, в принципе, получен, если будут еще вопросы - обращусь "по-правильному". А то ишь, залез тут в песочницу, не зная правил... 

Та дело то не в правилах, от если кто  то увидит ошибку в вашем коде (хотя раньше глаза сломает), как ему сослаться на номер нужной строки? На пальцах их посчитать, а вы потом посчитаете по своему и будете разглядывать разные строки. После чего начинается диалог слепого с глухим.