Rugged Metal Pushbutton - 19mm 6V RGB Momentary

via Adafruit
$30.36
SKU AF-3425
By popular demand, we now have rugged metal buttons with a full color RGB LED ring light! These chrome-plated metal buttons are rugged, but certainly not lacking in flair.
This is a 19mm Momentary version of the RGB pushbutton. Simply drill a 19mm hole into any material up to 0.45" thick and you can fit these in place – there's even a rubber gasket to keep water out of the enclosure. On the front of the button is a flat metal actuator, surrounded by a plastic RGB LED ring. On the back there are 4 metal contacts for the RGB LED ring (one anode and 3 cathodes for each red, green, and blue) and 3 spade contacts for the switch.
To use the RGB LED: Power the anode at 3-6V and light up the red, green, and blue LEDs by pulling their designated contacts to ground as you desire – there's a built in resistor! If you want to use this with a higher voltage, say 12V or 24V, simply add a 1K ohm resistor in series with the LED cathodes to keep the LED current at around 20mA. You can PWM the RGB pins to make any color you like.

To use the switch: There is one SPDT switch inside the button. Looking at the bottom of the switch, the common contact is the one to the left of the C. Above it are two spade contacts, one labeled NO (normally-open) and one labeled NC (normally-closed). When you press the button, the NO contact will close to the common contact, and the NC contact will open from the common.
The switch and LED are electrically separated, so to change the color, use a microcontroller to both read the contact pins and toggle the color control pins.