ws2812b не плавное переключение цветов

Кто любит RISC в жизни, заходим, не стесняемся.
mab72
Открыл глаза
Сообщения: 49
Зарегистрирован: Сб мар 26, 2016 01:01:31

Re: ws2812b не плавное переключение цветов

Сообщение mab72 »

[uquote="GARMIN",url="/forum/viewtopic.php?p=4561397#p4561397"]Так я её показал выше, тебе не было интересно.
Микроконтроллеры самые разные, STM32F051, 071, GD32...[/uquote]

Интересно, очень интересно (крайняя вариация моей проги основана на твоем приведенном выше коде). Я не профи в микроконтроллерах, так изучаю для ... (ну для зарядки мозгов). Поэтому многое в твоей функции непонятно:
-s32 h = hsv->h; переменная h обьявлена как знаковая, но какая интежер, дабл...? , и тутже непонятка в каком диапазоне у тебя hsv.h? Так как далее идет проверка на отрицательное значение , как h может быть отрицательным ведь обычно 0<=h<=359.
Реклама
Аватара пользователя
GARMIN
Держит паяльник хвостом
Сообщения: 954
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда
Контактная информация:

Re: ws2812b не плавное переключение цветов

Сообщение GARMIN »

[uquote="mab72",url="/forum/viewtopic.php?p=4561429#p4561429"]-s32 h = hsv->h; переменная h обьявлена как знаковая , и тутже непонятка в каком диапазоне у тебя hsv.h? Так как далее идет проверка на отрицательное значение , как h может быть отрицательным ведь обычно 0<=h<=359.[/uquote]

Код: Выделить всё

typedef s32 int32_t
typedef u32 uint32_t
typedef s16 int16_t
цвет при вычислениях может переполняться. Тогда его нужно приводить в нормальный вид 0<=h<=359

Код: Выделить всё

typedef struct
{
  u8 r; // 0..255
  u8 g; // 0..255
  u8 b; // 0..255
} rgb_t;

typedef struct
{
  s16 h;  // -359..359
  u8  s;  // 0..255
  u8  v;  // 0.255
} hsv_t;
Реклама
mab72
Открыл глаза
Сообщения: 49
Зарегистрирован: Сб мар 26, 2016 01:01:31

Re: ws2812b не плавное переключение цветов

Сообщение mab72 »

Уфф... задымился. Как цвет при вычислении может переполниться если входные данные не могут быть больше 360 и меньше нуля? А что дает вращение от -359 до 359 почему не ограничиться 0-359?
Аватара пользователя
GARMIN
Держит паяльник хвостом
Сообщения: 954
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда
Контактная информация:

Re: ws2812b не плавное переключение цветов

Сообщение GARMIN »

hue - это просто угол направления в цветовой палитре. У меня цвета алгоритмические, и прибавление или вычитание угла к произвольному цвету может выйти за пределы нормального диапазона. Это можно программно отследить, но алгоритм делался устойчивым к ошибкам.
Реклама
Эиком - электронные компоненты и радиодетали
mab72
Открыл глаза
Сообщения: 49
Зарегистрирован: Сб мар 26, 2016 01:01:31

Re: ws2812b не плавное переключение цветов

Сообщение mab72 »

Всем доброго времени.
Переписал все заново, переосмыслив и подумав. И таки заработало. Спасибо всем. За функцию переобразования ХаСэВэ в ЭрЖэБИ отдельное спасибо GARMIN
Реклама
Ответить

Вернуться в «ARM»