#include <FastLED.h>
//Яркость менять только в промежутке (0-255)
#define NUM_BRIGH 100
//Длина линии звезды
#define NUM_TRAKS 5
//количество адрессных лент
#define NUM_TAPE 2
//записывать суда PIN каждой ленты(нельзя писать нигде цифры в название)
int NUM_PIN[] = {12 , 6};
//Сколько всего пикселей в каждой светодиодной ленте(Нужно указать и через define и в массив
int NUM_PIXELS[] = {20,6};
// Заддержка между звёздами
unsigned long delayTIME = 100;
//затухание светодиодов (0-255)(можно поэексперемнтировать посмотреть как лучше будет выглядеть)
#define lowbright 64
void setup() {
randomSeed (analogRead(0));
// меняет яркость в соответствии со значением NUM_BRIGH
// значение яркости до 255
}
void loop() {
int i = 0;
i = random (NUM_TAPE);
NUM_LEDS = NUM_PIXELS[i];
NUM_PINA= NUM_PIN[i];
CRGB leds[NUM_LEDS];
FastLED.addLeds<NEOPIXEL, NUM_PIN>(leds, NUM_LEDS);
// меняет яркость в соответствии со значением NUM_BRIGH
// значение яркости до 255
FastLED.setBrightness(NUM_BRIGH);
//перерыв между падающими звёздами
delay(delayTIME);
//Вызов функции с звездой
// Выберает позицию для начала звезды
int NUM_UTAPE = random(NUM_TAPE);
int starPosition = random(NUM_PIXELS[NUM_UTAPE] - NUM_TRAKS);
//Делает звёздный путь
for (int i = 0; i < NUM_TRAKS; i++, starPosition++) {
if (i == 0) {
leds[starPosition] = CHSV(0, 0, NUM_BRIGH); // первый пиксель ярче
}
else {
leds[starPosition] =CRGB::White; // цвет шлейфа (белый)
}
FastLED.show();
delay(100);
}
starPosition = starPosition - NUM_TRAKS;
fadeToBlackBy(leds, NUM_LEDS, lowbright); // постепенно затухаем все светодиоды
//уберает звёздный путь
for (int i = 0; i < NUM_TRAKS; i++, starPosition++){
leds[starPosition] = CRGB::Black;
FastLED.show();
delay(50);
}
FastLED.show();
}
Вообщем проблема состоит в том что я не знаю какой тип надо NUM_PINA и NUM_LEDS , если поставить int то функция инициализации не принимает такой тип. пишет
/sketch/sketch.ino: In function 'void loop()':
'NUM_LEDS' was not declared in this scope
suggested alternative: 'NUM_PIXELS'
NUM_PIXELS
и
'NUM_PINA' was not declared in this scope
suggested alternative: 'NUM_PIN'
NUM_PIN
также пишет что массив leds не объявлен хотя он объявлен в той же функции что и инициализация
'leds' was not declared in this scope
suggested alternative: 'gets'
ТС, что ты вообще хочешь “изобразить”?
Там же вместе с библиотекой примеры есть…
Мой “стенд”:
Arduino Nano
Arduino IDE 1.8.19
Код компилируется
// КОМПИЛИРОВАЛ ПОД ПЛАТУ ARDUINO NANO
#include <FastLED.h> // https://github.com/FastLED/FastLED/tree/master
//Яркость менять только в промежутке (0-255)
#define NUM_BRIGH 100
//Длина линии звезды
#define NUM_TRAKS 5
//количество адрессных лент
#define NUM_TAPE 2
#define DATA_PIN 3 // ВЗЯЛ ИЗ ПРИМЕРА К БИБЛИОТЕКЕ
//записывать суда PIN каждой ленты(нельзя писать нигде цифры в название)
int NUM_PIN[] = {12 , 6};
//Сколько всего пикселей в каждой светодиодной ленте(Нужно указать и через define и в массив
int NUM_PIXELS[] = {20, 6};
// Заддержка между звёздами
unsigned long delayTIME = 100;
//затухание светодиодов (0-255)(можно поэексперемнтировать посмотреть как лучше будет выглядеть)
#define lowbright 64
void setup() {
randomSeed (analogRead(0));
// меняет яркость в соответствии со значением NUM_BRIGH
// значение яркости до 255
}
void loop() {
int i = 0;
i = random (NUM_TAPE);
int NUM_LEDS = NUM_PIXELS[i];
int NUM_PINA = NUM_PIN[i];
CRGB leds[NUM_LEDS];
// FastLED.addLeds<LED_TYPE, NUM_PIN>(leds, NUM_LEDS);
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
// меняет яркость в соответствии со значением NUM_BRIGH
// значение яркости до 255
FastLED.setBrightness(NUM_BRIGH);
//перерыв между падающими звёздами
delay(delayTIME);
//Вызов функции с звездой
// Выберает позицию для начала звезды
int NUM_UTAPE = random(NUM_TAPE);
int starPosition = random(NUM_PIXELS[NUM_UTAPE] - NUM_TRAKS);
//Делает звёздный путь
for (int i = 0; i < NUM_TRAKS; i++, starPosition++) {
if (i == 0) {
leds[starPosition] = CHSV(0, 0, NUM_BRIGH); // первый пиксель ярче
}
else {
leds[starPosition] = CRGB::White; // цвет шлейфа (белый)
}
FastLED.show();
delay(100);
}
starPosition = starPosition - NUM_TRAKS;
fadeToBlackBy(leds, NUM_LEDS, lowbright); // постепенно затухаем все светодиоды
//уберает звёздный путь
for (int i = 0; i < NUM_TRAKS; i++, starPosition++) {
leds[starPosition] = CRGB::Black;
FastLED.show();
delay(50);
}
FastLED.show();
}
Скетч использует 4504 байт (13%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 109 байт (5%) динамической памяти, оставляя 1939 байт для локальных переменных. Максимум: 2048 байт.
Варнинги
sketch_may26a.ino: In function ‘void loop()’:
sketch_may26a.ino:39:7: warning: unused variable ‘NUM_PINA’ [-Wunused-variable]
int NUM_PINA = NUM_PIN[i];
^~~~~~~~
void loop() {
int i = 0;
int NUM_LEDS = 0;
int NUM_PINA= 0;
i = random (NUM_TAPE);
NUM_LEDS = NUM_PIXELS[i];
NUM_PINA= NUM_PIN[i];
CRGB leds[NUM_LEDS];
FastLED.addLeds<NEOPIXEL, NUM_PIN>(leds, NUM_LEDS);
// меняет яркость в соответствии со значением NUM_BRIGH
// значение яркости до 255
FastLED.setBrightness(NUM_BRIGH);
//перерыв между падающими звёздами
delay(delayTIME);
Обьвил но теперь ругаеться что под шаблон библиотеки не подходит
/sketch/sketch.ino: In function 'void loop()':
no matching function for call to 'CFastLED::addLeds<NEOPIXEL, NUM_PIN>(CRGB [NUM_LEDS], uint32_t&)'
In file included from /sketch/sketch.ino:1:0:
In file included from /sketch/sketch.ino:1:0:
/libraries/FastLED/src/FastLED.h:274:130: note: candidate: template<ESPIChipsets CHIPSET, unsigned char DATA_PIN, unsigned char CLOCK_PIN, EOrder RGB_ORDER, long unsigned int SPI_DATA_RATE> CLEDController& CFastLED::addLeds(CRGB*, int, int)
template<ESPIChipsets CHIPSET, uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER, uint32_t SPI_DATA_RATE > CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
^~~~~~~
In file included from /sketch/sketch.ino:1:0:
/libraries/FastLED/src/FastLED.h:274:130: note: candidate: template<ESPIChipsets CHIPSET, unsigned char DATA_PIN, unsigned char CLOCK_PIN, EOrder RGB_ORDER, long unsigned int SPI_DATA_RATE> CLEDController& CFastLED::addLeds(CRGB*, int, int)
template<ESPIChipsets CHIPSET, uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER, uint32_t SPI_DATA_RATE > CLEDController &addLeds(struct CRGB *data, int nLedsOrOffset, int nLedsIfOffset = 0) {
^~~~~~~
/libraries/FastLED/src/FastLED.h:274:130: note: template argument deduction/substitution failed:
Ну, а что ему ещё делать, если Вы шаблон несуществующий вызываете?
Знаете, ровно на ту же самую проблему я лично Вам уже отвечал. И потом, когда у Вас ошибка “ушла”, показывал, что никуда она не ушла и указал в какой строке сидит реальная, настоящая ошибка.
Думал, что Вы тогда разобрались, т.к. никаких вопросов от Вас больше не последовало. Но сейчас я вижу практически ту же самую ошибку. Нам что, сначала начинать? Мне опять бить пальцы, чтобы Вы исчезли, наплевав на всё, как тогда?