Определите предустановленные цвета с помощью библиотеки FastLed
Я использую адресуемую светодиодную ленту на 150 светодиодов и Arduino Nano для ее управления с помощью библиотеки FastLed
.
Я пытаюсь создать функцию turn_on_leds
, которая получает 4 параметра:
1) время задержки включения светодиода в шлейфе, 2) направление (пока не актуально), 3) индекс цвета для массива colors
, 4) процент яркости.
Проблема № 1: цветовой массив определен для выбора из предустановленных определений цветов (Установлена ссылка, но при выборе col_indx
=2, что означает colors[2]
, светодиоды не горят красным
, как они должны, И при установке leds[i]=0xFF0000
устанавливается правильный результат.
Проблема №2: в loop
есть for, предназначенный для повышения яркости с 0 до 100, НО результаты равны 0 для первой итерации и 9 для всех остальных.
Будем благодарны за любую ПОМОЩЬ!
Парень
Код:
#include <FastLED.h>
#define NUM_LEDS 10
#define BRIGHTNESS 55
#define DATA_PIN 7
char *colors[] = {0x000000,0xFFFFFF,0xFF0000,0x008000,0x0000FF}; // черный, белый,r,g,b
CRGB leds[NUM_LEDS];
int t = 0;
void setup() {
Serial.begin(9600);
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
// FastLED.setBrightness(ЯРКОСТЬ);
}
void turn_leds_on(int del_1, bool dir_1, int col_indx, int bright_1) {
if (dir_1 == true ) { // от начала до конца
for (int i = 0; i <= NUM_LEDS; i++) {
leds[i] = 0xFF0000;//colors[col_indx];
FastLED.setBrightness(bright_1*255/100);
FastLED.show();
delay(del_1);
}
}
}
void loop() {
Serial.println(t);
turn_leds_on(50, true, 2, 100);
delay(1000);
// Turn_leds_on(50, true, 0, t);
// задержка(1000);
if (t < 100 ) {
t += 10;
}
else {
t = 0;
}
}
@Guy . D, 👍0
1 ответ
Лучший ответ:
Ваш массив colors
должен иметь тип CRGB
, а не char *
.
CRGB colors[] = {0x000000,0xFFFFFF,0xFF0000,0x008000,0x0000FF}; // черный, белый,r,g,b
Вторая проблема: вы выходите за пределы массива светодиодов:
for (int i = 0; i <= NUM_LEDS; i++) {
leds[i] = 0xFF0000;//colors[col_indx];
Вы идете от 0 до 10 включительно. Это 11 итераций. Не существует такого фрагмента массива, как leds[10]
, поэтому записываемое в него значение в конечном итоге перезаписывает следующие два байта в памяти - и они оказываются занятыми переменной t
.
- Питание светодиодной ленты - Сколько ампер?
- Несколько условий оператора if
- Светодиоды: разница между общим анодом и общим катодом
- Светодиод L продолжает гореть
- Улучшенное циклическое переключение цветов RGB.
- Плавное мигание светодиодов
- Остановить мигание светодиодов
- FastLED - Как управлять определенными светодиодами
Спасибо. это решило проблему 1, а как насчет 2?, @Guy . D
@Guy.D Вы выходите за пределы массива., @Majenko
ОМГ, ты так ПРАВ. Спасибо!, @Guy . D