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

by MathieuF16 in Circuits > Arduino

1188 Views, 6 Favorites, 0 Comments

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

vlcsnap-2019-10-18-19h42m37s376.png
20190806_103958.jpg
diymidicontrollerfinal v12V11 ASSEMBLED.jpg
diymidicontrollerfinal v12V11 ASSEMBLED 02.jpg
diymidicontrollerfinal v12V10.jpg
diymidicontrollerfinal v12V9.jpg

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

POTENTIOMETERS AND BUTTONS

midi controller diy02_bb.jpg
Sans titre2.jpg

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

NEOPIXEL RINGS WITH ARDUINO

12665-02a-2ff.jpg

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

MIDI COMMUNICATION With the Arduino

MIDI.jpg

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

Wiring

Untitled Sketch 3_bb.jpg
schema test neopixelDDD_schéma.jpg
09277-2.jpg

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

The Program

51363844ce395f9922000001.png

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

3D Print Part

COMPLETE NEOPIXEL LED V4 v2.png
PLAQUE FINAL SANS EXTRUSION CIRCLE TRSPT3 v1.png
CRYSTAL 02.jpg
CRYSTAL 01.jpg
20190502_225610.jpg

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

Aluminium Plate

PLAQUE FINAL SANS EXTRUSION CIRCLE 2 v2.jpg
PLAQUE 01.jpg
20190730_115723.jpg

Plexiglass Box 8mm

diymidicontrollerfinal EXPLOSED VIEW v3 box.jpg
diymidicontrollerfinal EXPLOSED VIEW v3 top.png
diymidicontrollerfinal EXPLOSED VIEW v3 SIDE .jpg
diymidicontrollerfinal EXPLOSED VIEW v3.jpg

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

Assembly

diymidicontrollerfinal v12V10.jpg
diymidicontrollerfinal v12V9.jpg
BOX OPENING 02.jpg
20190805_114754.jpg

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

FINAL (Video TEST)

20190806_103958.jpg
20190806_104243.jpg

https://youtu.be/c_BEFl-kEec

Cart

panier.png

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

Everything You Need in One Pack