Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

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

Пт мар 29, 2024 21:57:19

Так я её показал выше, тебе не было интересно.
Микроконтроллеры самые разные, STM32F051, 071, GD32...


Интересно, очень интересно (крайняя вариация моей проги основана на твоем приведенном выше коде). Я не профи в микроконтроллерах, так изучаю для ... (ну для зарядки мозгов). Поэтому многое в твоей функции непонятно:
-s32 h = hsv->h; переменная h обьявлена как знаковая, но какая интежер, дабл...? , и тутже непонятка в каком диапазоне у тебя hsv.h? Так как далее идет проверка на отрицательное значение , как h может быть отрицательным ведь обычно 0<=h<=359.

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

Пт мар 29, 2024 22:08:39

-s32 h = hsv->h; переменная h обьявлена как знаковая , и тутже непонятка в каком диапазоне у тебя hsv.h? Так как далее идет проверка на отрицательное значение , как h может быть отрицательным ведь обычно 0<=h<=359.


Код:
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;

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

Пт мар 29, 2024 23:41:32

Уфф... задымился. Как цвет при вычислении может переполниться если входные данные не могут быть больше 360 и меньше нуля? А что дает вращение от -359 до 359 почему не ограничиться 0-359?

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

Сб мар 30, 2024 13:53:56

hue - это просто угол направления в цветовой палитре. У меня цвета алгоритмические, и прибавление или вычитание угла к произвольному цвету может выйти за пределы нормального диапазона. Это можно программно отследить, но алгоритм делался устойчивым к ошибкам.

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

Пт апр 12, 2024 18:50:45

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