diff --git a/PINOUT.md b/PINOUT.md new file mode 100644 index 0000000..2220952 --- /dev/null +++ b/PINOUT.md @@ -0,0 +1,217 @@ +# πŸ”Œ Pinout-Diagramm USB-MIDI-Controller + +## Arduino Pro Micro Pinout mit AnschlΓΌssen + +``` + Arduino Pro Micro (Sparkfun) + Micro-USB Port + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ β”Œβ”€β”€β”€β” β”‚ + β”‚ β”‚USBβ”‚ β”‚ + External β”‚ RAW β””β”€β”€β”€β”˜ GND β”‚ Ground + Power β”‚ β”‚ + β”‚ GND RSTβ”‚ Reset + β”‚ β”‚ + β”‚ RST VCCβ”‚ +5V + β”‚ β”‚ + β”‚ VCC A3β”‚ (nicht verwendet) + β”‚ β”‚ + SDA β”‚ 2 A2β”‚ (nicht verwendet) + (I2C Data) β”‚ β”‚ + SCL β”‚ 3 A1β”‚ (nicht verwendet) + (I2C Clock) β”‚ β”‚ + MUX_S0 β”‚ 4 A0β”‚ MUX Signal + (Select 0) β”‚ β”‚ (Analog Input) + MUX_S1 β”‚ 5 15β”‚ (nicht verwendet) + (Select 1) β”‚ β”‚ + MUX_S2 β”‚ 6 14β”‚ (nicht verwendet) + (Select 2) β”‚ β”‚ + MUX_S3 β”‚ 7 16β”‚ (nicht verwendet) + (Select 3) β”‚ β”‚ + β”‚ 8 10β”‚ (nicht verwendet) + (nicht verw.) β”‚ β”‚ + β”‚ 9 TXOβ”‚ (nicht verwendet) + (nicht verw.) β”‚ β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + +## πŸ”— Anschluss-Matrix + +### I2C-Bus Verteilung +``` + +5V ────┬─── MCP23017 #1 VDD (Pin 9) + β”œβ”€β”€β”€ MCP23017 #2 VDD (Pin 9) + └─── Pull-Up WiderstΓ€nde (4.7kΞ©) + β”‚ + Arduino Pin 2 (SDA) ─────────────┼─── MCP23017 #1 SDA (Pin 13) + β”œβ”€β”€β”€ MCP23017 #2 SDA (Pin 13) + β”‚ + Arduino Pin 3 (SCL) ─────────────┼─── MCP23017 #1 SCL (Pin 12) + └─── MCP23017 #2 SCL (Pin 12) + + GND ────┬─── MCP23017 #1 VSS (Pin 10) + └─── MCP23017 #2 VSS (Pin 10) +``` + +## 🎚️ MCP23017 Chip-Layout + +### MCP23017 #1 (Adresse 0x20) +``` + MCP23017 #1 + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + Button 0 ───│ 1 GPB0 VDD 28 │─── +5V + Button 1 ───│ 2 GPB1 GPB7 27 │─── Button 7 + Button 2 ───│ 3 GPB2 GPB6 26 │─── Button 6 + Button 3 ───│ 4 GPB3 GPB5 25 │─── Button 5 + Button 4 ───│ 5 GPB4 GPB4 24 │─── Button 4 + NC ───────│ 6 GPB5 GPB3 23 │─── LED 3 + NC ───────│ 7 GPB6 GPB2 22 │─── LED 2 + NC ───────│ 8 GPB7 GPB1 21 │─── LED 1 + +5V ─────│ 9 VDD GPB0 20 │─── LED 0 + GND ─────│10 VSS INTA 19 │─── NC + GND ─────│11 NC INTB 18 │─── +5V (Reset) + I2C SCL ─────│12 SCL GPA7 17 │─── LED 15 + I2C SDA ─────│13 SDA GPA6 16 │─── LED 14 + GND ─────│14 A0 GPA5 15 │─── LED 13 + Button 8 ─────│15 GPA0 GPA4 14 │─── LED 12 + Button 9 ─────│16 GPA1 GPA3 13 │─── LED 11 + Button 10 ─────│17 GPA2 GPA2 12 │─── LED 10 + Button 11 ─────│18 GPA3 GPA1 11 │─── LED 9 + Button 12 ─────│19 GPA4 GPA0 10 │─── LED 8 + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + +### MCP23017 #2 (Adresse 0x21) +``` + MCP23017 #2 + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + Button 16 ───│ 1 GPB0 VDD 28 │─── +5V + Button 17 ───│ 2 GPB1 GPB7 27 │─── LED 19 + Button 18 ───│ 3 GPB2 GPB6 26 │─── LED 18 + Button 19 ───│ 4 GPB3 GPB5 25 │─── LED 17 + LED 16 ───│ 5 GPB4 GPB4 24 │─── LED 16 + NC ───────│ 6 GPB5 GPB3 23 │─── NC + NC ───────│ 7 GPB6 GPB2 22 │─── NC + NC ───────│ 8 GPB7 GPB1 21 │─── NC + +5V ─────│ 9 VDD GPB0 20 │─── NC + GND ─────│10 VSS INTA 19 │─── NC + GND ─────│11 NC INTB 18 │─── +5V (Reset) + I2C SCL ─────│12 SCL GPA7 17 │─── NC + I2C SDA ─────│13 SDA GPA6 16 │─── NC + +5V ─────│14 A0 GPA5 15 │─── NC + NC ───────│15 GPA0 GPA4 14 │─── NC + NC ───────│16 GPA1 GPA3 13 │─── NC + NC ───────│17 GPA2 GPA2 12 │─── NC + NC ───────│18 GPA3 GPA1 11 │─── NC + NC ───────│19 GPA4 GPA0 10 │─── NC + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + +## πŸ”€ CD74HC4067 Multiplexer Layout + +``` + CD74HC4067 Multiplexer + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + Analog 0 ─────│ 1 C0 VCC 24 │───── +5V + Analog 1 ─────│ 2 C1 C15 23 │───── (Erweiterung) + Analog 2 ─────│ 3 C2 C14 22 │───── (Erweiterung) + Analog 3 ─────│ 4 C3 C13 21 │───── (Erweiterung) + Analog 4 ─────│ 5 C4 C12 20 │───── Analog 11 (Slider 4) + Analog 5 ─────│ 6 C5 C11 19 │───── Analog 10 (Slider 3) + Analog 6 ─────│ 7 C6 C10 18 │───── Analog 9 (Slider 2) + Analog 7 ─────│ 8 C7 C9 17 │───── Analog 8 (Slider 1) + ─────│ 9 C8 C8 16 │───── + Arduino A0 ───────│10 SIG C7 15 │───── +Arduino Pin 4 ─────│11 S0 C6 14 │───── Arduino Pin 6 (S2) + GND ─────│12 GND C5 13 │───── Arduino Pin 7 (S3) +Arduino Pin 5 ─────│13 S1 C4 12 │───── + GND ─────│14 EN C3 11 │───── + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + +## πŸŽ›οΈ Regler-AnschlΓΌsse (Potis & Slider) + +### Typische Potentiometer/Slider-Verdrahtung +``` +Poti/Slider Multiplexer + + VCC ──── Pin 1 (links) + + Signal ── Pin 2 (mitte) ──── Kanal Cx + + GND ──── Pin 3 (rechts) +``` + +### Kanal-Zuordnung +``` +Kanal Komponente MIDI-CC Funktion +──────────────────────────────────────────── + C0 ── Poti 1 ── CC1 ── Volume Ch1 + C1 ── Poti 2 ── CC2 ── Volume Ch2 + C2 ── Poti 3 ── CC3 ── Volume Ch3 + C3 ── Poti 4 ── CC4 ── Volume Ch4 + C4 ── Poti 5 ── CC5 ── Filter 1 + C5 ── Poti 6 ── CC6 ── Filter 2 + C6 ── Poti 7 ── CC7 ── Filter 3 + C7 ── Poti 8 ── CC8 ── Filter 4 + C8 ── Slider 1 ── CC9 ── Master Vol + C9 ── Slider 2 ── CC10 ── Crossfader + C10 ── Slider 3 ── CC11 ── Send FX 1 + C11 ── Slider 4 ── CC12 ── Send FX 2 +``` + +## ⚑ Stromversorgung & Signale + +### Power Distribution +``` +USB +5V ──┬── Arduino VCC + β”œβ”€β”€ MCP23017 #1 VDD + β”œβ”€β”€ MCP23017 #2 VDD + β”œβ”€β”€ CD74HC4067 VCC + β”œβ”€β”€ Potentiometer VCC (alle) + └── LED-VorwiderstΓ€nde + +USB GND ──┬── Arduino GND + β”œβ”€β”€ MCP23017 #1 VSS + β”œβ”€β”€ MCP23017 #2 VSS + β”œβ”€β”€ CD74HC4067 GND + β”œβ”€β”€ Potentiometer GND (alle) + β”œβ”€β”€ Button-Switches (alle) + └── LED-Kathoden (alle) +``` + +### Signal-IntegritΓ€t +- **I2C Pull-Ups**: 4.7kΞ© zwischen SDA/SCL und +5V +- **Button-Debouncing**: Software-basiert (50ms) +- **Analog-Filtering**: Schwellenwert-basiert (Β±4 LSB) +- **LED-Strombegrenzung**: 220-470Ξ© VorwiderstΓ€nde + +## πŸ“ Layout-Empfehlungen + +### PCB/Breadboard-Layout +``` + [Arduino Pro Micro] + β”‚ + β”‚ I2C Bus (kurz halten!) + β”‚ + β”Œβ”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β” + β”‚ β”‚ +[MCP23017 #1] [MCP23017 #2] + β”‚ β”‚ + β”‚ β”‚ +[16 Buttons] [4 Buttons] +[16 LEDs] [4 LEDs] + + [CD74HC4067] + β”‚ + [12 Analog] + [Controls] +``` + +### Kabel-LΓ€ngen +- **I2C-Bus**: < 30cm (kurze Verbindungen) +- **Analog-Signale**: < 50cm (gegen Rauschen) +- **Digital-Signale**: < 1m (unkritisch) +- **Power**: Stern-Topologie vom Arduino aus + +Dieser detaillierte Verdrahtungsplan zeigt dir genau, wie alle Komponenten miteinander verbunden werden mΓΌssen. Die ASCII-Diagramme geben dir eine klare visuelle Referenz fΓΌr den Aufbau deines MIDI-Controllers! 🎡 diff --git a/WIRING.md b/WIRING.md new file mode 100644 index 0000000..76cda3c --- /dev/null +++ b/WIRING.md @@ -0,0 +1,200 @@ +# Verdrahtungsplan fΓΌr USB-MIDI-Controller + +## πŸ“‹ Übersicht der Verbindungen + +### Arduino Pro Micro Pin-Belegung +``` + Arduino Pro Micro (ATmega32u4) + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ RAW GND β”‚ + β”‚ GND RST β”‚ + β”‚ RST VCC β”‚ + β”‚ VCC A3 β”‚ + SDA β”‚ 2 A2 β”‚ + SCL β”‚ 3 A1 β”‚ + MUX_S0 β”‚ 4 A0 β”‚ ──── MUX Signal + MUX_S1 β”‚ 5 15 β”‚ + MUX_S2 β”‚ 6 14 β”‚ + MUX_S3 β”‚ 7 16 β”‚ + β”‚ 8 10 β”‚ + β”‚ 9 TXO β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + +## πŸ”Œ Detaillierte Verdrahtung + +### 1. I2C Bus (MCP23017 Chips) +``` +Arduino Pro Micro MCP23017 #1 (0x20) MCP23017 #2 (0x21) + Pin 2 (SDA) ──┬─── Pin 13 (SDA) ───────── Pin 13 (SDA) + Pin 3 (SCL) ──┼─── Pin 12 (SCL) ───────── Pin 12 (SCL) + VCC ──────┼─── Pin 9 (VDD) ────────── Pin 9 (VDD) + GND ──────┼─── Pin 10 (VSS) ──────── Pin 10 (VSS) + β”‚ Pin 18 (RESET) ─── VCC + β”‚ Pin 15,16,17 ────── GND (A0,A1,A2 = 0x20) + β”‚ + └─── Pin 18 (RESET) ─── VCC + Pin 15 ────────── VCC (A0 = HIGH) + Pin 16,17 ──────── GND (A1,A2 = 0x21) +``` + +### 2. CD74HC4067 Multiplexer +``` +Arduino Pro Micro CD74HC4067 + Pin 4 (MUX_S0) ────── Pin 10 (S0) + Pin 5 (MUX_S1) ────── Pin 11 (S1) + Pin 6 (MUX_S2) ────── Pin 14 (S2) + Pin 7 (MUX_S3) ────── Pin 13 (S3) + Pin A0 ─────────────── Pin 1 (SIG) + VCC ─────────────── Pin 24 (VCC) + GND ─────────────── Pin 12 (GND) + Pin 15 (EN) ──── GND (Enable) +``` + +## πŸŽ›οΈ Analoge Regler-AnschlΓΌsse + +### Potentiometer & Schieberegler an Multiplexer +``` +Multiplexer Kanal Komponente Wert + C0 ────── Poti 1 (Mittelpin) CC1 + C1 ────── Poti 2 (Mittelpin) CC2 + C2 ────── Poti 3 (Mittelpin) CC3 + C3 ────── Poti 4 (Mittelpin) CC4 + C4 ────── Poti 5 (Mittelpin) CC5 + C5 ────── Poti 6 (Mittelpin) CC6 + C6 ────── Poti 7 (Mittelpin) CC7 + C7 ────── Poti 8 (Mittelpin) CC8 + C8 ────── Slider 1 (Mittelpin) CC9 + C9 ────── Slider 2 (Mittelpin) CC10 + C10 ────── Slider 3 (Mittelpin) CC11 + C11 ────── Slider 4 (Mittelpin) CC12 + C12-C15 ────── (Reserviert fΓΌr Erweiterung) +``` + +### Potentiometer-Verdrahtung (pro Poti/Slider) +``` + VCC ──── Pin 1 (links/oben) + GND ──── Pin 3 (rechts/unten) +Multiplexer ── Pin 2 (Mittelpin/Schleifer) +``` + +## πŸ”˜ Button & LED Matrix + +### MCP23017 #1 (Adresse 0x20) - Buttons 0-15 & LEDs 0-15 +``` +MCP Pin Button LED MIDI Note Funktion + 0 ──── BTN0 ── LED0 ── C2 (36) ── Kick + 1 ──── BTN1 ── LED1 ── C#2 (37) ── Snare + 2 ──── BTN2 ── LED2 ── D2 (38) ── Hi-Hat + 3 ──── BTN3 ── LED3 ── D#2 (39) ── Open Hat + 4 ──── BTN4 ── LED4 ── E2 (40) ── Clap + 5 ──── BTN5 ── LED5 ── F2 (41) ── Crash + 6 ──── BTN6 ── LED6 ── F#2 (42) ── Ride + 7 ──── BTN7 ── LED7 ── G2 (43) ── Tom 1 + 8 ──── BTN8 ── LED8 ── G#2 (44) ── Tom 2 + 9 ──── BTN9 ── LED9 ── A2 (45) ── Tom 3 + 10 ──── BTN10 ── LED10 ── A#2 (46) ── Perc 1 + 11 ──── BTN11 ── LED11 ── B2 (47) ── Perc 2 + 12 ──── BTN12 ── LED12 ── C3 (48) ── Perc 3 + 13 ──── BTN13 ── LED13 ── C#3 (49) ── Perc 4 + 14 ──── BTN14 ── LED14 ── D3 (50) ── FX 1 + 15 ──── BTN15 ── LED15 ── D#3 (51) ── FX 2 +``` + +### MCP23017 #2 (Adresse 0x21) - Buttons 16-19 & LEDs 16-19 +``` +MCP Pin Button LED MIDI Note Funktion + 0 ──── BTN16 ── / ── E3 (52) ── Transport: Play + 1 ──── BTN17 ── / ── F3 (53) ── Transport: Stop + 2 ──── BTN18 ── / ── F#3 (54) ── Transport: Rec + 3 ──── BTN19 ── / ── G3 (55) ── Transport: Loop + 4 ──── LED16 ── / ── / ── Play LED + 5 ──── LED17 ── / ── / ── Stop LED + 6 ──── LED18 ── / ── / ── Rec LED + 7 ──── LED19 ── / ── / ── Loop LED + 8-15 ──── (Nicht verwendet) +``` + +## ⚑ Button-Schaltung (pro Button) +``` + VCC + β”‚ + β”Œβ”΄β” 10kΞ© Pull-Up + β”‚ β”‚ (intern im MCP23017) + β””β”¬β”˜ + β”‚ + β”œβ”€β”€β”€ MCP23017 Pin (Input) + β”‚ + β”Œβ”΄β” Button (Tact Switch) + β””β”¬β”˜ + β”‚ + GND +``` + +## πŸ’‘ LED-Schaltung (pro LED) +``` +MCP23017 Pin (Output) ──┬── 220Ξ© Widerstand ──┬── LED Anode (+) + β”‚ β”‚ + GND β”‚ + LED Kathode (-) + β”‚ + GND +``` + +## πŸ”„ VollstΓ€ndiger Systemaufbau +``` + USB-MIDI-Controller + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ β”‚ + β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ + β”‚ β”‚ Arduino Pro β”‚ β”‚ CD74HC4067 β”‚ β”‚ + β”‚ β”‚ Micro β”‚ ──── β”‚ Multiplexer β”‚ ──── 12x Analog β”‚ + β”‚ β”‚ (ATmega32u4) β”‚ β”‚ β”‚ Regler β”‚ + β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ + β”‚ β”‚ β”‚ + β”‚ β”‚ I2C Bus β”‚ + β”‚ β”‚ β”‚ + β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ + β”‚ β”‚ β”‚ β”‚ + β”‚ β–Ό β–Ό β”‚ + β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ + β”‚ β”‚ MCP23017 β”‚ β”‚ MCP23017 β”‚ β”‚ + β”‚ β”‚ #1 β”‚ β”‚ #2 β”‚ β”‚ + β”‚ β”‚ (0x20) β”‚ β”‚ (0x21) β”‚ β”‚ + β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ + β”‚ β”‚ β”‚ β”‚ + β”‚ β–Ό β–Ό β”‚ + β”‚ 16x Buttons 4x Buttons β”‚ + β”‚ 16x LEDs 4x LEDs β”‚ + β”‚ β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ + β–Ό USB + β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” + β”‚ PC β”‚ + β”‚ DAW β”‚ + β”‚ Software β”‚ + β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + +## πŸ“Œ Wichtige Hinweise + +### Pull-Up WiderstΓ€nde +- MCP23017 hat interne Pull-Up WiderstΓ€nde (aktiviert im Code) +- Externe 4.7kΞ© Pull-Ups fΓΌr I2C-Bus empfohlen bei langen Leitungen + +### Spannungsversorgung +- Alle Komponenten arbeiten mit 5V +- Gesamtstromaufnahme: ~500mA (bei allen LEDs an) +- USB kann bis zu 500mA liefern + +### Verkabelungstipps +- I2C-Leitungen kurz halten (< 1m) +- Twisted Pair fΓΌr I2C bei lΓ€ngeren Strecken +- SternfΓΆrmige GND-Verteilung +- EntstΓΆrkondensatoren (100nF) an jedem IC + +### Debugging +- Serial Monitor fΓΌr MIDI-Events +- LED-Test beim Start zeigt Hardware-Status +- I2C-Scanner-Code fΓΌr Adress-Probleme verfΓΌgbar