ARDUINO Проблема с отображением градиента на матрице

ae485

✩✩✩✩✩✩✩
29 Апр 2022
21
0
Обратил внимание, что на матрице иногда довольно странно цвета отображаются.
Залил градиентом, ожидал получить
IMG_3695.JPG
а получил
IMG_3694.JPG
(матрица под тетрадным листом и пленкой) ну т.е. что-то там типа градиента есть в первых трех строках, но дальше все сливается. плюс первые несколько точек мерцают.
подскажите что тут не так?

C++:
void setup() {
     FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);  // GRB ordering is typical
     FastLED.setBrightness(20);
}
    for (int index = 0; index < NUM_LEDS; index++) {
    leds[index].g = index;
    leds[index].r = index;
    leds[index].b = index;
 

Сотнег

★★★★★★★
15 Янв 2020
4,446
1,520
@ae485,
поменяйте строчку на
FastLED.setBrightness(255);
и в менеджере плат выберите версию ядра для своей платы 2.7.4.
 
Изменено:

ae485

✩✩✩✩✩✩✩
29 Апр 2022
21
0
@Сотнег,
а что такое менеджер плат? в меню именно такого названия не нашел.
Untitled-1.gif
 

ae485

✩✩✩✩✩✩✩
29 Апр 2022
21
0
глобально ничего не поменялось, стало сильно ярче, но градиента так и нет. я с этого начинал проверку, потом понизил яркость до 20.
может тут проблема по току? померять нет возможности сейчас потребление.
 

Сотнег

★★★★★★★
15 Янв 2020
4,446
1,520
@ae485,
после цикла своего, не знаю, где вы его вставили, там ещё должна быть строчка
FastLED.Show();
добавьте после неё
delay(1000);
 

ae485

✩✩✩✩✩✩✩
29 Апр 2022
21
0
Show после цикла стояло. Задержка визуально ничего не изменила.
ничего не поменялось.
 

ae485

✩✩✩✩✩✩✩
29 Апр 2022
21
0
Причем если играть параметром setBrightness, то со значением 5 светится минимально возможной яркостью только половина экрана, а вторая пустая.
Похоже тут и не пахнет RGB с 16,7млн , а есть резкие переходы в определенных значениях.
 

Сотнег

★★★★★★★
15 Янв 2020
4,446
1,520
@ae485,
миллионы цветов - это и есть яркость.
Плюс ещё насыщенность.
А вообще их типа 256.
 

ae485

✩✩✩✩✩✩✩
29 Апр 2022
21
0
C++:
#include <FastLED.h>

#define WIDTH 16
#define HEIGHT 16
#define NUM_LEDS WIDTH * HEIGHT

#define DATA_PIN 6

CRGB leds[NUM_LEDS];

void setup() {
     FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);  // GRB ordering is typical
     FastLED.setBrightness (1);
}

void loop() {

  for (int index = 0; index < NUM_LEDS; index++) {
    leds[index].g = index;
    leds[index].r = index;
    leds[index].b = index;
  }
    FastLED.show(); 
    delay(1000);
}
 

Сотнег

★★★★★★★
15 Янв 2020
4,446
1,520
@ae485,
ну вот если вернуть нормальную яркость, должно стать нормально и не мерцать.

Дальше можно начинать менять источник питания.
 

ae485

✩✩✩✩✩✩✩
29 Апр 2022
21
0
источника пробовал два - через порт USB от ПК - белый цвет хороший.
внешний, 12->5в, этот желтит, если все светодиоды зажечь.

но оба источника питания никак не влияют на основную проблему - отсутствие равномерного градиента при инкременте RGB.
Инкремент реально заметен на самой первой линии на значениях 0 - 0xF, а дальше яркость такая, как будто подается 0xFF.
 

Сотнег

★★★★★★★
15 Янв 2020
4,446
1,520
@ae485,
может, вам будет проще начать с менее белого цвета?
leds[index].g = 0;
leds[index].r = 0;
leds[index].b = index;


Но яркость вам всё равно придётся сделать нормальную
FastLED.setBrightness(255);
 

ae485

✩✩✩✩✩✩✩
29 Апр 2022
21
0
Такой вариант тоже пробовал.
Меняется только основной цвет, в части градиента ничего не меняется.
Вообще по цветопередаче нареканий нет, все как надо отображается.
Но вот с градиентом беда какая-то.
IMG_3696.JPG
Такое ощущение что по экспоненте яркость увеличивается.
 

Сотнег

★★★★★★★
15 Янв 2020
4,446
1,520
@ae485,
хз.
Вроде, ничего такой себе градиент в нижней строчке.
Может, вы своё зрение переоцениваете?
 

ae485

✩✩✩✩✩✩✩
29 Апр 2022
21
0
Хочется видеть градиент 0..0xFF, как в эмуляторе выдает. а на скрине 0..0x0F всего.

Кстати CHSV (255,255,index) выдает уже что-то больше похожее на градиент.
Пока похоже на то, что это особенности FastLED в части RGB, которые нужно понять и простить.
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,975
634
45
Похоже тут и не пахнет RGB с 16,7млн , а есть резкие переходы в определенных значениях.
Похоже светодиоды SK6812. Слышал, по многочисленным мнениям, что у них довольно посредственная калибровка.
 

Сотнег

★★★★★★★
15 Янв 2020
4,446
1,520
@ae485,
вы матрице передаёте значение яркости (тока?) каждого из трёх светиков (RGB).
FastLED тут не причём.

Будет нагляднее, если вы на матрицу наденете решётку, чтобы свет от светодиодов мог попадать к вам в глаз и на фотокамеру не только прямолинейно.
 

ae485

✩✩✩✩✩✩✩
29 Апр 2022
21
0
@Сотнег,
реализация градиента на HSV дает повод усомниться, что FastLED не влияет.

Похоже светодиоды SK6812. Слышал, по многочисленным мнениям, что у них довольно посредственная калибровка.
а вот это уже теплее кстати. как бы еще при покупке различать их.
 

Сотнег

★★★★★★★
15 Янв 2020
4,446
1,520
@ae485,
FastLED и нужна как раз, чтобы из HSV переводить в нормальный вид перед отправкой на матрицу.
Ну и для других подобных трюков.