1

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
Greenonline
3,1527 gold badges36 silver badges48 bronze badges
asked Oct 30, 2018 at 20:24
1
  • 1
    yes, that sort of a thing has been addressed before ..... what type of joysticks will you be using? Commented Oct 30, 2018 at 20:29

2 Answers 2

1

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
answered Oct 30, 2018 at 22:42
0

Sparkfun also sells a SX1509 module for a very good price. It can do a matrix keyboard all on its own (hardware support) with similar (independent hardware-driven) LED heartbeat control. Aside from that, you can use any remaining pins as normal I/O (read/write/pwm). There are 16 pins total, and it's controlled over I2C.

Adafruit also has a board called the Seesaw, which is a small Atmel SAMD09 with I2C slave firmware. It works similarly, but the pins are much more limited.

Either way, you simply include a library to your code, and use the object to interface with the pins rather than the usual functions on your Arduino. Most seem to use identical syntax (someclass.digitalWrite()...) to the normal Arduin functions.

answered Oct 31, 2018 at 19:36

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.