Помогите разобраться с цветами в FastLed.
- Войдите на сайт для отправки комментариев
Пнд, 02/11/2020 - 17:55
#include <FastLED.h>
#define DATA_PIN 3 //пин данных
#define NUM_LEDS 256 //количество светодиодов
#define MATRIX_WIDTH 16 //ширина матрицы
#define MATRIX_HEIGHT 16 //высота матрицы
#define BRIGHTNESS 1 //яркость
//CRGB leds[NUM_LEDS];
CRGBArray<NUM_LEDS> leds;
void setup() {
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);//0-255
Serial.begin (9600);
}
void loop() {
RadugaV(10);
}
void RadugaV(int CurSpeed){
for (int cc=NUM_LEDS-(MATRIX_WIDTH-1);cc>=0;cc--){
FastLED.clear();
leds.fadeToBlackBy(40);
for (int i=0;i<MATRIX_WIDTH;i++){
for (int j=0;j<MATRIX_HEIGHT;j++){
//Serial.print(cc+i);Serial.print(";");Serial.print(i);Serial.print(";");Serial.println(j);
CHSV color = CHSV((uint8_t)(cc+i),255,255);
setPixel(i,j,color);
}
}
FastLED.show();
delay(CurSpeed);
}
}
void setPixel(int X, int Y, CHSV color){
int curLed;
if (X%2 == 0){
curLed = MATRIX_HEIGHT*X+Y;
}
else {
curLed = (MATRIX_HEIGHT*(X+1)-1)-Y;
}
leds[curLed] = color;
}
Вот такой код. Задумка:
Должны по матрице бежать цветные волны по одному цвету на столбик.
И они бегут, но всего 4 цвета: красный, синий зеленый желтый. Подскажите почему промежуточные цвета не показываются?
Сам разобрался. Яркость у меня всего 1 стояла.
Видимо HUE неверно генерируется? Упрощайте скетч, локализуйте проблему.