@irzayev

Arduino ESP8266 как заставить FastLED управлять двумя разными лентами с 2мя разными эффектами одновременно?

Доброго времени суток,
Подскажите как заставить 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();

}
  • Вопрос задан
  • 2888 просмотров
Пригласить эксперта
Ответы на вопрос 1
@kalapanga
Подскажите как заставить Arduino ESP8266 библиотека FastLED управлять двумя разными лентами с 2мя разными эффектами одновременно?

Всё здесь, в первоисточнике: https://github.com/FastLED/FastLED/wiki/Multiple-C...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы