For the mix colours, i.e. purple, turquoise and yellow - (let's take purple, it's not pink, as an example) you won't really be doing 50% red and 50% blue, will you? It'll be better to just set the RED pin and the BLUE pin high... then you get purple, and the brightest purple to boot - not 50% red + 50% blue, but 100% red and 100% blue.
The same for yellow and... cyan.
And white too... all three colour pins (read from switches if you want) set simply to high.
It's only when you get to the other colours... your pinks, oranges and all those in-between that you will need to do PWM, as then you definitely will be setting the duty-cycle of your individual LEDs as you can't make an
orange with binary low / high pins.
I've done stuff like this in JAL (not with the switches, I'm currently at a stage where I'm reading a potentiometer to control the speed of programmatic fades).
Working out what colour is to be displayed based on switch positions sounds like some simply
if then elsif logic to me - it'd certainly get you there. Software PWM procedures can be pretty straightforward (in JAL)... I can't claim any knowledge of other languages.
Not being assumptive, but if you're not yet confident in coding, JAL might well be a good place to start. I can't see what language you intend to use, nor what PIC you have, but I have had success doing this kind of stuff with both the 16F628a and 12F683.
JAL pseudocode (using aliases, if you were just talking about the three switch pins controlling the three LED pins would be as simple as):
Code:
forever loop
RedLED = RedLEDSwitch
BlueLED = BlueLEDSwitch
GreenLED = GreenLEDSwitch
end loop