How do I translate a variable into HSV color values?

4 views (last 30 days)
I have this project where I am interfacing MATLAB with an Arduino board and reading input from an analog pin connected to a potentiometer. I want to use the voltage values read from the potentiometer to control the color of a rectangle. The voltage read is stored in the variable voltage
I have the following code:
while true
voltage = a.readVoltage('A0');
color = ??voltage??
fill([0 1 1 0], [0 0 1 1], color)
pause(0.1)
end
I would like to map the variable voltage to an HSV color value, specifically controlling the H(hue) parameter - so than when I turn my potentiometer wheel, I basically cycle through the different colors of the color wheel (ie change the hue). Is this possible? Any help is appreciated. Thanks.
Edit: the value of the voltage variable is in the range 0 - 5.

Accepted Answer

William Rose
William Rose on 15 Jul 2022
Vmax=5;
while true
voltage = a.readVoltage('A0');
color = hsv2rgb(voltage/Vmax,1,1);
fill([0 1 1 0], [0 0 1 1], color);
pause(0.1)
end
Try the above. I tested it with the following modified code, which does not require an external input. It worked as expected, generating a whole range of colors from R to Y to G to C to B to M to R.
Vmax=5;
for i=0:24
voltage = i*Vmax/24;
color = hsv2rgb(voltage/Vmax,1,1);
fill([0 1 1 0], [0 0 1 1], color);
pause(0.5)
end
Good luck.

More Answers (0)

Categories

Find more on Instrument Control Toolbox in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!