Перевод из HSV в RGB на arduino(без float)

Нужно из hsv перевести в rgb(только в 1 сторону)

Но:

1-без float

2-нестандартный диапазон(0-4080)

3-на arduino

Все формулы из инета не работают даже с нормальным диапазоном

void HSV_RGB(int H,int S,int V) {
   
    if (S == 0) {
        R = V;
        G = V;
        B = V;
        setCol(R,G,B);
        return;
    }

    
    region = floor(H / 43);

    remainder = (H - (region * 43)) * 6; 

    
    P = (V * (255 - S)) >> 8;
    Q = (V * (255 - ((S * remainder) >> 8))) >> 8;
    T = (V * (255 - ((S * (255 - remainder)) >> 8))) >> 8;


    
    if (region == 0) {
        R = V;
        G = T;
        B = P;

    } else if(region == 1) {
        R = Q; 
        G = V; 
        B = P;

    } else if(region == 2) {
        R = P; 
        G = V; 
        B = T;

    } else if(region == 3) {
        R = P; 
        G = Q; 
        B = V;

    } else if(region == 4) {
        R = T; 
        G = P; 
        B = V;

    } else {
        R = V; 
        G = P; 
        B = Q;
    }

    setCol(R,G,B);
}

Диапазон обычный(0-255) но не работает даже с ним

Функция ничего не возвращает, но в себе вызывает setCol(rgb) который принимает rgb цвет.

выводит какую то хрень. Как по мне это в >> 8

Так как код изначально переписывался с питона и может что на питоне и arduino сдвиг работает по разному


Ответы (0 шт):