Help with Programming for MIDI Controller for audio.

Talk guys, I’m new in this environment, I do not understand programming bullies, but I have a great desire to put together a MIDI controller.

I put the project in the protoboard with 09 potentiometers and 20 touch buttons, I downloaded a code from the net that works cool the buttons, but the potentiometers do not work at all, when I open the Hairless Midi and I turn the potentiometer it does not leave the 127, in the Maximum reaches 126 …
The big question, would someone have a code that works to pass me ??? Would be for 12 potentiometers and more or less about 20 buttons …

I am using the arduino Mega 2560, with the atmel 2560

My One Driver Link of pictures the posts wired: https://1drv.ms/f/s!Ap_MQPmwnTq4id9PiEgOQs-fOlqcAQ

Follow the Code

#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();

/////////////////////////////////////////////

const int NButtons = 3; // *coloque aqui o numero de entradas digitais utilizadas
const int button[NButtons] = {5, 6, 7}; // *neste array coloque na ordem desejada os pinos das portas digitais utilizadas
int buttonCState[NButtons] = {0}; // estado atual da porta digital
int buttonPState[NButtons] = {0}; // estado previo da porta digital

/////////////////////////////////////////////

const int NPots = 1; // *coloque aqui o numero de entradas analogicas utilizadas
const int pot[NPots] = {A0}; // *neste array coloque na ordem desejada os pinos das portas analogicas utilizadas
int potCState[NPots] = {0}; // estado atual da porta analogica
int potPState[NPots] = {0}; // estado previo da porta analogica
int potVar = 0; // variacao entre o valor do estado previo e o atual da porta analogica

/////////////////////////////////////////////

byte midiCh = 1; // *Canal midi a ser utilizado
byte note = 36; // *Nota mais grave que sera utilizada
byte cc = 1; // *CC mais baixo que sera utilizado

/////////////////////////////////////////////

int TIMEOUT = 300; //quantidade de tempo em que o potenciometro sera lido apos ultrapassar o varThreshold
int varThreshold = 4; //threshold para a variacao no sinal do potenciometro
boolean potMoving = true; // se o potenciometro esta se movendo
unsigned long pTime[NPots] = {0}; // tempo armazenado anteriormente
unsigned long timer[NPots] = {0}; // armazena o tempo que passou desde que o timer foi zerado

/////////////////////////////////////////////

void setup () {

//Start midi connection
MIDI.begin();
//Serial Connection
Serial.begin(115200);
//Initialize Digital Pins as inputs
for (int i=0; i<NButtons; i++){
pinMode(button*, INPUT_PULLUP);*

  • }*
    // pinMode(button[3], INPUT); //pino 13

  • //Initialize Analog Pins as inputs*

  • for (int i=0; i<NPots; i++){*
    _ pinMode(pot*, INPUT);_
    _
    }*_

}
void loop () {
* //Le todas as entradas digitais utilizadas*
* for (int i=0; i<NButtons; i++) {*
buttonCState = digitalRead(button*);*
* }*
// buttonCState[3] = !buttonCState[3]; // Inverte o valor do pino 13
* //Le o estado dos botoes e manda NoteOns para cada um que estiver ativo*
* for (int i=0; i<NButtons; i++) {*
if (buttonCState != buttonPState*) {*
_ if(buttonCState == LOW) {
MIDI.sendNoteOn(note+i, 127, midiCh); // envia NoteOn(nota, velocity, canal midi)

buttonPState = buttonCState*;*
* }
else {
MIDI.sendNoteOn(note+i, 0, midiCh);_

buttonPState _= buttonCState;
}
}*_

* }*
* ////////////////////////////////////////////////////////////////////////////////////////*
* for (int i=0; i<NPots; i++) { // le todas entradas analogicas utilizadas*
potCState = analogRead(pot*);*
* }*
_ /* para que seja feita apenas a leitura das portas analogicas quando elas sao utilizadas, sem perder resolucao,
* ´e preciso estabelecer um “threshold” (varThreshold), um valor minimo que as portas tenham que ser movimentadas*
* para que se comece a leitura. Apos isso cria-se uma especie de “portao”, um portao que se abre e permite*
* que as porta analogicas sejam lidas sem interrupcao por determinado tempo (TIMEOUT). Quando o timer ´e menor que TIMEOUT*
* significa que o potenciometro foi mexido ha muito pouco tempo, o que significa que ele provavelmente ainda esta se movendo,
logo deve-se manter o “portao” aberto; caso o timer seja maior que TIMEOUT siginifica que ja faz um tempo que ele nao ´e movimentado,
logo o portao deve ser fechado. Para que essa logica aconteca deve-se zerar o timer (linhas 99 e 100) a cada vez que a porta analogica*

* variar mais que o varThreshold estabelecido.
/
for (int i=0; i<NPots; i++) {

potVar = abs(potCState - potPState*); // calcula a variacao da porta analogica*
* if (potVar >= varThreshold) { //sets a threshold for the variance in the pot state, if it varies more than x it sends the cc message*
pTime = millis(); // armazena o tempo previo
* }_
timer _= millis() - pTime; // reseta o timer*
if (timer < TIMEOUT) { // se o timer for menor que o tempo maximo permitido significa que o potenciometro ainda esta se movendo
* potMoving = true;
}
else {
potMoving = false;
}
if (potMoving == true) { // se o potenciometro ainda esta se movendo, mande o control change*

MIDI.sendControlChange(cc+i, map(potCState*, 0, 1023, 0, 127), midiCh); // envia Control Change (numero do CC, valor do CC, canal midi)_
potPState _= potCState; // armazena a leitura atual do potenciometro para comparar com a proxima*
* }
}*_

}

How about posting the code that you are using with a view to fixing it.

How are the posts wired ?