Teensy creator Paul Stoffregen has shared a new project on OSH Park:
I/O Expander for LED Arcade Buttons
The Monolith Synth Project needed to use a large number of these LED lit arcade buttons.
Dimming of the LEDs was required. Initially I considered using this Adafruit 16 Channel PWM board. But the LEDs in these buttons have integrated resistors which require 12 volts, so 16 transistor circuits and another board for reading the switches would have also been needed.
It uses the same PCA9685 chip for 12 bit PWM control on every LED, with mosfet drivers to handle 12V outputs, and also a MCP23017 chip to read the buttons. Every button has a discrete 1K pullup resistor (rather than using the higher impedance on-chip pullups) to help with use in the same cable bundles cross coupling to 12V PWM signals.
Four of these boards where used in the Monolith Synth project:
The project is featured in this Tested video: