Перевод из 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 сдвиг работает по разному