Arduino Uno - Building a Controller I have the Arduino Uno and I'm working on a project to build a controller with different inputs and some outputs for readouts. In classic style, I got the Arduino Uno before realising that I might not have enough I/O points to connect everything I want. 

I believe there is a way to expand my Uno by using an I/O Expander? Has anyone done something similar? The controller will be for a specific game called Kerbal Space Station. There are quite a few articles helping with the build but not specific to what I am looking at.

Components I'll be using:

INPUTS:


2x 3 Axis Joysticks
11x Microswitches
6x Toggle switches
1x Analogue slider
1x 10 point rotary switch


OUTPUTS:


4x 12 pin LED Bargraphs
1x Serial LCD module display
Yes, all those things have been done before.  Here's some suggestions for components:


MCP23S17 / MCP23017 - SPI / I2C IO expander (16 IO pins, many can be connected together) (MCP23S17 library)
MCP3208 - 8 channel 12-bit SPI ADC (MCP3208 library)
TLC59116 - I2C Constant Current LED PWM driver (16 channel) (TLC59116 library)


Some other useful tutorials that may help:


Keypad - read lots of buttons / switches with not many pins
Multiplex - Control many LEDs with not many IO pins