This is an old revision of the document!
Table of Contents
MIDI Keyboard
A 25 key Midi keyboard based on an Arduino (Atmega328P-PU). It has an small OLED Display, too.
MCP23017
I2C
I2C SDA SCL Arduino Uno A4 A5
Setting the Adress
To set the I2C address of the MCP23017 one has to connect A0, A1 and A2 to GND or to power.
GND = 0 and +5V = 1
A0 A1 A2 adresse 0 0 0 0x20 0 1 0 0 0x21 1 0 1 0 0x22 2 1 1 0 0x23 3 0 0 1 0x24 4 1 0 1 0x25 5 0 1 1 0x26 6 1 1 1 0x27 7
And in the code one has to put the address in the “begin” command:
mcp.begin(address);
Pulldown Resistor
Every botton is connected to +5V and at the pin to the MCP23017 it has a 10k pulldown resistor to ground.
IO Pin ----- Button ------- +5V | 10k | GND
Library
Datasheet
Key and Pin parsing
MCP1 Key/Note Library A0 D1 0 A1 C#1 1 A2 E1 2 A3 D#1 3 A4 F1 4 A5 C1 5 A6 G1 6 A7 F#1 7 B0 A#1 8 B1 H1 9 B2 G#1 10 B3 A1 11 B4 12 B5 13 B6 14 B7 15 MCP2 Key/Note Library A0 D2 0 A1 C#2 1 A2 E2 2 A3 D#2 3 A4 F2 4 A5 C2 5 A6 G2 6 A7 F#2 7 B0 A#2 8 B1 H2 9 B2 G#2 10 B3 A2 11 B4 C3 12 B5 13 B6 14 B7 15
OLED Display
Pins:
OLED Display Arduino GND: Ground GND VCC: 3.3v or 5.0V Power Supply +5V D0: CLK Pin 08 D1: MOSI Pin 07 RST: Reset Pin 06 DC: Data Command Pin 05 CS: Chip Select NC
Bit Converter
Example Code
Knowledge
MCP23017
http://www.learningaboutelectronics.com/Articles/MCP23017-IO-port-expander-circuit-with-arduino.php
http://www.nikolaus-lueneburg.de/2015/11/mcp23017-i2c-io-port-expander/