Доброго времени суток,
Подскажите как заставить Arduino ESP8266 библиотека FastLED управлять двумя разными лентами с 2мя разными эффектами одновременно?
Первая лента (чтото вроде метеора белого бегает по кругу, но имеется бекграунд фон постоянный синий)
Вторая лента - горит синим и через 30сек. плавно отключается на 5 секунд и опять включается на 30
Я написал код, первый эффект работает, но как добавляю второй, первый перестаёт работать, а второй вовсе нет.
Помогите дописать верно
#include "FastLED.h" // библиотека для работы с лентой
#define LED_COUNT_A 24 // число светодиодов в кольце/ленте
#define LED_COUNT_B 24 // число светодиодов в кольце/ленте2
#define LED_DA 22 // пин, куда подключен DIN 1 ленты
#define LED_DB 21 // пин, куда подключен DIN 2 ленты
#define del 50
int max_bright = 100; // максимальная яркость (0 - 255)
// ---------------СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ-----------------
int BOTTOM_INDEX = 0; // светодиод начала отсчёта
int TOP_INDEX = int(LED_COUNT_A / 2);
int EVENODD = LED_COUNT_A % 2;
struct CRGB leds_a[LED_COUNT_A];
struct CRGB leds_b[LED_COUNT_B];
int ledsX[LED_COUNT_A][3]; //-ARRAY FOR COPYING WHATS IN THE LED STRIP CURRENTLY (FOR CELL-AUTOMATA, MARCH, ETC)
int thishue = 0; //-FX LOOPS DELAY VAR
int thissat = 255; //-FX LOOPS DELAY VAR
int idex = 0; //-LED INDEX (0 to LED_COUNT_A-1
// ---------------СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ-----------------
void setup()
{
Serial.begin(9600); // открыть порт для связи
LEDS.setBrightness(max_bright); // ограничить максимальную яркость
LEDS.addLeds<WS2812B, LED_DA, GRB>(leds_a, LED_COUNT_A); // настрйоки для ленты A
LEDS.addLeds<WS2812B, LED_DB, GRB>(leds_b, LED_COUNT_B); // настрйоки для ленты B
LEDS.show(); // отослать команду
}
//------------------------LED EFFECT FUNCTIONS------------------------
void ems_lightsALL() {
idex++;
if (idex >= LED_COUNT_A) {
idex = 0;
}
int idexR = idex;
int idexB = antipodal_index(idexR-5);
int thathue = (thishue + 160) % 255;
leds_a[idexR] = CHSV(178, 221, 255); // color 1
leds_a[idexB] = CHSV(255, 10, 255); // color 2
LEDS.show();
delay(100);
}
void Scene_fade_down ()
{
for ( int i = 0; i < LED_COUNT_B; i++ )
{
leds_b[i] = CHSV(178, 221, 255);
leds_b[i].fadeToBlackBy( 64 );
}
FastLED.show();
delay(del);
}
//------------------------LED EFFECT FUNCTIONS------------------------
//---FIND INDEX OF HORIZONAL OPPOSITE LED
int horizontal_index(int i) {
//-ONLY WORKS WITH INDEX < TOPINDEX
if (i == BOTTOM_INDEX) {
return BOTTOM_INDEX;
}
if (i == TOP_INDEX && EVENODD == 1) {
return TOP_INDEX + 1;
}
if (i == TOP_INDEX && EVENODD == 0) {
return TOP_INDEX;
}
return LED_COUNT_A - i;
}
int antipodal_index(int i) {
int iN = i + TOP_INDEX;
if (i >= TOP_INDEX) {
iN = ( i + TOP_INDEX ) % LED_COUNT_A;
}
return iN;
}
//---FIND INDEX OF ANTIPODAL OPPOSITE LED
void loop() {
ems_lightsALL();
Scene_fade_down();
}