Stream deck with Arduino

Hi there,

I was looking at the Elgato Stream Dek (Stream Deck | elgato.com) and I was thinking "You know, it's just a few buttons, right?) so apart from it having little LCD screens I figured it'd be fun to make one on my own as a project.

Now I COULD be boring and just use digital pins 2-12 for 13 pins then analog pins 0 and 1 to make it the same 15 as the stream deck has but where's the challenge in that?

I thought I'd learn something new.

My thoughts are get an arduino leonard and an MCP23017 and just wanted to clarify a few things.

Firstly with the MCP23017 pins 1-8 and pins 21-28 are the ones used as I/O right?

Pins 10, 15, 16 and 17 go to gnd as I understand it but can they go to the gnd on the Arduino/breadboard (assuming the gnd on the breadboard is connected to one of the gnd pins on Arduino)? Or do you need to ground it separately.

For the 5v it's the same question really... Do I use the 5v from the Arduino connected to my breadboard?

What are pins 11, 14m 19 and 20 used for?

With this could I use digital pins 2-12 on the Arduino + Analog pins 0-3 for a total of 15 keys from the Arduino + 16 from the MCP23017 for a total of 31?

I doubt I will have need for 31 keys but I wanted to make sure I'm correct in my assumptions :slight_smile:

Firstly with the MCP23017 pins 1-8 and pins 21-28 are the ones used as I/O right?

Yes.

Pins 12 and 13 are the I2C lines, these need pull up resistors,
Pins 19 and 20 can signal an input has changed to the processor without having to read the whole thing to find out.
Pins 11 and 14 are not connected to anything inside the chip so their is no need to wire them to anything.
Connect the power and ground any way you want so long as their is a connection.

Get and read the data sheet for this chip it tells you everything.

if you use the micro LCD screens on the buttons, you get the visual parts, and you get the tactile feel of the switches. of course, you could use debounce and an audible clicking noise.

but if you use the micro LCD screens, you will need a lot faster processor(s)?

you could also use a touch screen and a cover so you only see small sections
or use multiple touch screens for more selections.

look up charlieplexing.

assuming you only ever press one button at a time, you can use a matrix for inputs.

the port expander you mentioned is one way, there is also the input from a shift register
https://playground.arduino.cc/Code/ShiftRegSN74HC165N

Grumpy_Mike:
Get and read the data sheet for this chip it tells you everything.

Awesome I will :slight_smile: Thanks or the answers as well!

dave-in-nj:
if you use the micro LCD screens on the buttons, you get the visual parts, and you get the tactile feel of the switches. of course, you could use debounce and an audible clicking noise.

but if you use the micro LCD screens, you will need a lot faster processor(s)?

you could also use a touch screen and a cover so you only see small sections
or use multiple touch screens for more selections.

Seems to be a lot of options... Depends how intense I want to go I guess... I will have to weigh up options and see what I can do!