Introduction: DIY MIDI CONTROLLER USB Plug & Play (UPGRADE NEOPIXEL RING)

Passionate MAO and Electronic Music but also seeing that it was possible to create a personalize Midi Interface i made mine
6 Potentiometers and 12 buttons ( on / off ) but to make the spot more difficult that it was already i wish add visual indication auround each rotary button

Step 1: POTENTIOMETERS AND BUTTONS

To be able to send a command midi with potentiometer it took me undersand that the potentiometer are analogic component ( 0 to 1023 ) and the data that receives Arduino on its anologic input have small variation
that small variation disturbed the comunication with Computer

I advise you to test each potentiometers to avoid an error and if the variation of value is very important a potentiomtre is maybe HS

The value will examine by arduino and must be send to Computer in Midi must be Clean ( its's numeric data )

The small variation can be exculed of data that will be inclued in program The buttons acts like on / off switch

Step 2: NEOPIXEL RINGS WITH ARDUINO

To use the neopixel RIng with arduino you must install the NEOPIXEL Library
https://learn.adafruit.com/adafruit-neopixel-uberg...

#include // Library Neopixel

#define PINX X // DATA IN ; Which pin on the microcontroller board is connected to the NeoPixels?

#define NUMPIXELS XX // How many NeoPixels are attached to the board?

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELSX, PINX, NEO_GRB + NEO_KHZ800); //NeoPixel Library

pixels.setPixelColor(i, 0, 0, 0); // RGB COLOR CODE in decimal

pixels.setBrightness (brightness) // Setting of Brightness

pixels.show() // This sends the updated pixel color to the hardware.

For information the neopixel with 16 pixels running counter-clockwise

About power consumption we are

(2x12 + 2x 16 + 2x24) x 3 (each component have 3 leds RGB) = 312 leds.

Each Led consume 20ma, Total 6,4A but we use never all pixels light on and secondly never with maximum luminosity.

To consume less power i discover a tip of persistance retinienne

Anyway 5V output give by arduino it's not enought to it work correctly

Step 3: MIDI COMMUNICATION With the Arduino

Firstly Copy midi library Midi.h in C:\Program Files (x86)\Arduino\libraries"

https://sourceforge.net/projects/arduinomidilib/

In order to use the arduino same as an Interface Plug And Plug and can transmit midi information in USB you must flash arduino with a custom Firmware

See there for this handling : https://dartmobo.com/midi-over-usb/

The only problem is ; to modify the code if there is an error you must put the custom firmware in arduino to reactivate the serial communication

Step 4: Wiring

The rotary are connected on Analogic Input

The switch GND ,Led GND ,and Neopixel DATA IN on Digital Input

https://www.sparkfun.com/products/9277

Led used are mono color choose the same color pin for led on pcb

Step 5: The Program

    Microcontroller means Programming

    That was for me the harder step but it's opportunity to get back into it

    The program devide in several part in one loop

    each part becoming a subprogramm

    Set switch DATA pin with the led data Pin matching on Pcb board

    affiche () ; // Read Potentiometer Value and Send Midi Data; 
    // Control NeoPixel with The read of Potentiometer Value and Set Color and Broghtness
    ring1 ();
    ring2();
    ring3();
    ring4();
    ring5();
    ring6();
    button(); // Check the button state , send midi data and control Led

    i'm very happy to have expert opinion to improve my program

    Step 6: 3D Print Part

    to receive the 6 neo pixel ring with impossibility to touch potentiometres a support is create

    The Neopixel are glue on it with glue gun

    This support is on second level because rotary can't put in Neopixel 12 ring

    Step 7: Aluminium Plate

    Step 8: Plexiglass Box 8mm

    To drill and tapp on the middle of slice i used a plexiglass of 8mm thickness

    Cut 5 Piece of plexiglass i used a circular saw ;

    1 x 210mm / 270mm

    2 x 210mm / 60mm

    2 x 254mm / 60mm

    To do assembly of the box We drill and Tapp on the middle of the slice of each part

    We do the same thing to put the spacer

    Drilling 2,5mm

    Tapping 3 mm

    Step 9: Assembly

    With the aid of spacer and 3mm screw we put it all together

    35mm Spacer for NEOPIXEL support ,50mm spacer for Sparkfun PCB and 5mm for Arduino

    Step 10: FINAL (Video TEST)

    https://youtu.be/c_BEFl-kEec

    Step 11: Cart

    6 x Liniar Potentiometers 10KOhm 0.25w

    12 x Resistor 220Ohm 0.25w

    12 x Resistor 10Kohm 0.25W

    12 x DIODE STANDARD ON SEMICONDUCTOR 1N4148TA 100V 200MA

    6 x Resistor 470Ohm

    1 x Capacitor 1000uF

    1 x ARDUINO 2650 R3

    3 x BUTTON PAD BREAKOUT PCB 2X2

    3 x BUTTON PAD YOP BEZEL 2X2

    2 x ADAFRUIT NEOPIXEL RGB 12 LED RING

    2 x ADAFRUIT NEOPIXEL RGB 16 LED RING

    2 x ADAFRUIT NEOPIXEL RGB 24 LED RING

    12 x HEXAGONAL Spacer M3 X 50MM

    3 x E HEXAGONAL Spacer M3 X 35MM

    1 x Sector Adaptator 5V 4A

    1 x USB A MALE to B MALE 20CM

    1 x Adaptator USB 2.0 TYPE B FEMELLE to USB 2.0 TYPE A

    1 x INTERRUPTEUR A BASCULE TRU COMPONENTS

    1 X Connecting Low Voltage Vertical Female 5MM 2.2MM

    1 x Plate of PLEXIGALS tickness 8MM

    Step 12: Everything You Need in One Pack