Firmware and tools for Arduino based 24 buttons midi controller
see it in action here
Install DualMocoLUFA on the Arduino 8U2's chip
(look inside the dualMocoLUFA
folder in this repository to find code and instructions)
dualMocoLUFA Project is Copyright (C) 2013 by morecat_lab http://morecatlab.akiba.coocan.jp/
- the 24 Arcade buttons are read by 3
74HC165
shift registers connected on Arduino's pin 2(LOAD), 3(CLOCK), and 4, 5, 6 (shift registers DATA) - 2 x 7 led digit display are controlled by 2
74HC595
shift registers connected on Arduino's pin 9(LATCH), 8(CLOCK) and 10(DATA). These shift registers are set in series. - two menu button on the side are connected to Arduino's pin 11 and 12 (with a pullup resistor)
Push buttons are connected to the arduino by using 74HC165
shift registers.
Here is the schematic of one module for 8 buttons. I used 2 5x1 headers for the connection to the buttons. In the schematic, this is the labels A
, B
, C
, D
and E
, F
, G
, H
. The last pin of each headers are connected to VCC
. Pull-up resistors are 10KΩ.
A group of 4 buttons are connected to one header like this:
This module is duplicated for each group of push 8 buttons. For 24 buttons, 3 of these modules are connected together like this:
And here are some photos of how I implemented this module using perf boards.
This module is optional, and is for displaying information using 2 seven segments LED.
It is using 74HC595
shift registers to control the 16 LED using 3 pins of the Arduino. 16 LED consume quite a lot of power for the Arduino, so in the code, I take care of turning ED off after a delay.
If I had to put more LED, I would use a MAX7219
LED matrix controller as this chip use way less power.
This is the schematic for one 74HC595
. Resistors are 4.7KΩ.
Here is how you connect the seven segments display
2 of these modules are daisy chained together like so:
Some photos of how I implemented this module using perf boards:
Finally, here is how the two modules are connected to the Arduino
Photos of how everything connects together: