Я работаю над проектом Arduino с использованием Led RGB Strip. Я обнаружил, что с этим что-то не так: в основном, значения меняются местами. Как вы, возможно, знаете, значение 0 отключает светодиод, а мой - нет. Видимо 255 выключает мой светодиод. Также красный канал и зеленый канал поменялись местами, почему бы и нет. Я в основном пытаюсь сделать какой-то алгоритм для изменения масштаба вместо перехода от 0-255 до 255-0 (вход 0, выход 255). Например, у меня есть красный RGB (255,0,0), он должен стать RGB (0,255,255). В моей глупости я попытался color.r/255
, который не работает, потому что зажимает значение от 0-1. Любые идеи ? Для справки, это часть моего кода:
struct Color
{
public:int R;
public:int G;
public:int B;
Color(int _r, int _g, int _b)
{
R = _r;
G = _g;
B = _b;
}
};
Color ReverseColor(struct Color *color)
{
Color reversed = *color;
// If one channel value is 255 -> 0 else if it's 0 -> 255 else my stupid equation
reversed.R = ((*color).R == 255) ? 0 : ((*color).R == 0) ? 255 : (*color).R / 255;
reversed.G = ((*color).G == 255) ? 0 : ((*color).G == 0) ? 255 : (*color).G / 255;
reversed.B = ((*color).B == 255) ? 0 : ((*color).B == 0) ? 255 : (*color).B / 255;
return reversed;
}
void SetColor(struct Color *color)
{
Color newColor = ReverseColor(&(*color));
*color = newColor;
analogWrite(Rpin, (*color).R);
analogWrite(Gpin, (*color).G);
analogWrite(Bpin, (*color).B);
}