One of the first issues I'm dealing with is figuring out how to read all 48 neck buttons and turn on/off all 48 LEDs. For modularity, I've decided that each PCB will contain 12 buttons arranged in 3 x 4. This will allow for easier troubleshooting and allow for a button pad platform to be created for other uses and projects. Because of this, my reading/writing options are slightly constrained as each PCB (four in the neck) has to be identical.
In most cases dealing with a large number of reading/writing assignments, row column scaling would be used. I've looked into this for the MK2 but since it does not have a uniform grid, and needs to be expandable, this doesn't seem like a possibility.
The solutions I am currently look at are: Shift Registers, Multiplexers, I/O Expanders, uControllers.
A closer look
Shift registers (4021 and 595)
Pro: Cheap, daisy chainable over 3 wires
Con: High parts count (need four 8-bit SR per board)
Multiplexers (4067)
Pro: Inexpensive, low part count (two per board)
Con: Each mux needs it's own Analog input
I/O Expander (MCP23017)
Pro: Inexpensive, can be both In and Out, LPC (two per board), i2c communication
Con: Ease of use unknown
uController (atTiny48/88)
Pro: Inexpensive, LPC (one per board), Serial Comm.
Con: AVR programming on board
So these are my options. I'll be making a decision this week.
No comments:
Post a Comment