Octapad with organ pedal

I make an octapad with arduino nano with this code but i want to connect it with a 6.35mm plug pedals. Is there any way for me to connect it? I had 8 port for pads and i want to have 2 more port for pedals. Here is the code

if (velocity > 127) velocity = 127;

if (piez_idx == KANAL_HAT){

if (digitalRead(KNOPKA_HAT) == LOW ){

//

}

else {

noteOn(DRUM_CHANEL,kick_note[piez_idx],velocity);

}

}

else {

noteOn(DRUM_CHANEL, kick_note[piez_idx], velocity);

}

tm[piez_idx] += kick_mute_time[piez_idx];

[#ifdef](https://uwithanage66.wixsite.com/mysite/my-blog/hashtags/ifdef) ANOTHER_MUTE_PIN

pinMode(stop_pin[piez_idx], OUTPUT);

[#else](https://uwithanage66.wixsite.com/mysite/my-blog/hashtags/else)

pinMode(kick_pin[piez_idx], OUTPUT);

[#endif](https://uwithanage66.wixsite.com/mysite/my-blog/hashtags/endif)

[#ifdef](https://uwithanage66.wixsite.com/mysite/my-blog/hashtags/ifdef) SHOW

cnt++;

velocity = kick_val[piez_idx];

Serial.print("IDX="); Serial.print(chan);

Serial.print(" Vel="); Serial.print(velocity);

Serial.print(" cnt="); Serial.println(note);

[#endif](https://uwithanage66.wixsite.com/mysite/my-blog/hashtags/endif)

}

}

if ( kick_val[piez_idx] < adc ) {

kick_val[piez_idx] = adc;

}

if ( micros() > tm[piez_idx] ) {

tm[piez_idx] = 0;

mute[piez_idx] = true;

[#ifdef](https://uwithanage66.wixsite.com/mysite/my-blog/hashtags/ifdef) ANOTHER_MUTE_PIN

pinMode(stop_pin[piez_idx], INPUT);

[#else](https://uwithanage66.wixsite.com/mysite/my-blog/hashtags/else)

pinMode(kick_pin[piez_idx], INPUT);

[#endif](https://uwithanage66.wixsite.com/mysite/my-blog/hashtags/endif)

}

}

}

no problem. replace 5 DIN connector with your plug. should i look google for a picture?

Yes, please. Thank you

wait, i think i have not really understand what you asking. do you can draw little sketch diagram on paper what your project is and some pictures of your "octopad" ?

image
My diagram like this but i don't use diode, i use nano board and 100k resistor instead
image

I want to add 2 6.35 female port to plug e-piano pedal to use as kick pedal
image

is a simple switch? connect famale port" to GND and pin 2

better you do

here full sketch


/*

  MIDI ударная установка
 
  sslobodyan@ya.ru 2017
 
*/

#define LED 13

#define PIEZ_CNT 8 // количество датчиков
#define DRUM_CHANEL 8

#define ANOTHER_MUTE_PIN_
#define SHOW_

#define CRASH 0 // номер пьезо на котором тарелка
// #define CRASHC 54
#define PIN_CRASH_STOP 9 // кнопка на крэше
#define OPEN_HAT 42 //нота открытого хэта
//#define OPENING_HAT 21 //звук педали хэта
#define KANAL_HAT 1 // номер пьезо на котором хэт
#define KNOPKA_HAT 10 // педаль хэт

// пороговый уровень датчика
int kick_treshold[PIEZ_CNT]={50,150,150,150,150,150,150,150};

// время на остановку колебаний
long kick_mute_time[PIEZ_CNT]={60000,50000,50000,50000,50000,50000,50000,50000};

// ноты на каналах
byte kick_note[PIEZ_CNT]={49,46,51,36,33,50,47,43};

// канал молчит
bool mute[PIEZ_CNT]={1,1,1,1,1,1,1,1};

// ножка датчика
const uint8_t kick_pin[PIEZ_CNT]={A0,A1,A2,A3,A4,A5,A5,A5};

#ifdef ANOTHER_MUTE_PIN
  const uint8_t stop_pin[PIEZ_CNT]={A0,A1,A2,A3,A4,A5,A5,A5};
#endif

int kick_val[PIEZ_CNT]; // предыдущее значение датчика
int velocity;

uint32_t tm[PIEZ_CNT], tm_led;
byte cnt=0, piez_idx=0;

void noteOn(int chan, int note, int velocity) {
    Serial.write( (0x90 | chan) );
    Serial.write(note);
    Serial.write(velocity);
}

void noteOff(int chan, int note, int velocity) {
    Serial.write( (0x80 | chan) );
    Serial.write(note);
    Serial.write(velocity);
}

void channelVolume(int chan, int velocity) {
    Serial.write( (0xb0 | chan) );
    Serial.write( 0x07 );
    Serial.write(velocity);
}

void channelPan(int chan, int pan) {
    Serial.write( (0xb0 | chan) );
    Serial.write( 0x0a );
    Serial.write(pan);
}

void channelBank(int chan, int dat) {
    Serial.write( (0xB0 | chan) );
    Serial.write( 0x00 );
    Serial.write( dat );
}

void channelInstrum(int chan, int dat) {
    Serial.write( (0xC0 | chan) );
    Serial.write( dat );
}

void setup() {
  Serial.begin(115200); // эмулятор МИДИ на компе
  //Serial.begin(31250); // реальный МИДИ
   pinMode(LED, OUTPUT);
  
   pinMode(PIN_CRASH_STOP, INPUT);
   pinMode(KNOPKA_HAT, INPUT); 
   
  digitalWrite(LED, LOW);
  for (byte i=0; i<PIEZ_CNT; i++) {
    digitalWrite(kick_pin[i], LOW);
    pinMode(kick_pin[i], INPUT);
#ifdef ANOTHER_MUTE_PIN   
    digitalWrite(stop_pin[i], LOW);
    pinMode(stop_pin[i], INPUT);   
#endif   
  }
 
  channelBank(1, 0);
  channelInstrum(1, DRUM_CHANEL);
  channelVolume(1, 70);

  // делитель 16 - частота опроса 1МГц разрешение 8 бит
  ADCSRA |= (1 << ADPS2);                     //Биту ADPS2 присваиваем единицу
  ADCSRA &= ~ ((1 << ADPS1) | (1 << ADPS0));  //Битам ADPS1 и ADPS0 присваиваем нули
}


void loop(){
  
if (mute[CRASH] == false) { //если щас играет крэш
      if (digitalRead[PIN_CRASH_STOP] == LOW) { // и при этом нажали кнопку
        noteOn (DRUM_CHANEL,kick_note[CRASH],0); // глуши тарелку
        //noteOn (DRUM_CHANEL,kick_note[CRASHC],127); // звук резко заглушенной тарелки
                                              }   
                           } 

    if(piez_idx>0) piez_idx--; else piez_idx=PIEZ_CNT-1; // выбор следующего датчика
 
    int adc = analogRead(kick_pin[piez_idx]);
    if (adc > kick_treshold[piez_idx]) {
      if ( tm[piez_idx] == 0 ){
        tm[piez_idx] = micros() + 2000;
        kick_val[piez_idx] = 0;
        digitalWrite(LED, HIGH);
        tm_led = millis()+10;
      }
    }

    if (tm_led > 0) {
      if (millis() > tm_led) {
        tm_led = 0;
        digitalWrite(LED, LOW);
      }
    }
       
    if ( tm[piez_idx] > 0 ) {   
      if ( micros() > tm[piez_idx] ) {
        if ( mute[piez_idx] ) {
          mute[piez_idx] = false;
          velocity = map(kick_val[piez_idx], kick_treshold[piez_idx], 1023, 1, 127);
          
          if (velocity > 127) velocity = 127;
          if (piez_idx == KANAL_HAT){
              if (digitalRead(KNOPKA_HAT) == LOW ){ // если кнопка нажата 
              //  noteOn(DRUM_CHANEL,OPENING_HAT,velocity); 
                noteOn(DRUM_CHANEL,OPEN_HAT,velocity); //играем открытый хэт
                }
                else {
                  noteOn(DRUM_CHANEL,kick_note[piez_idx],velocity); //играем ноту из масива закрытый хэт
                }
              }
          else {           
          noteOn(DRUM_CHANEL, kick_note[piez_idx], velocity); // играем остальные ноты из масива
          }
          tm[piez_idx] += kick_mute_time[piez_idx];
          

          #ifdef ANOTHER_MUTE_PIN
            pinMode(stop_pin[piez_idx], OUTPUT); // разряжаем кондер   
          #else
            pinMode(kick_pin[piez_idx], OUTPUT); // разряжаем кондер   
          #endif
          #ifdef SHOW
            cnt++;
            velocity = kick_val[piez_idx];
            Serial.print("IDX="); Serial.print(piez_idx);
            Serial.print(" Vel="); Serial.print(velocity);
            Serial.print(" cnt="); Serial.println(cnt);
          #endif
        }
      }
      if ( kick_val[piez_idx] < adc ) {
        kick_val[piez_idx] = adc; // ищем максимум сигнала от датчика
      }

      if ( micros() >  tm[piez_idx] ) {
        // закончили сканирование одного удара
        tm[piez_idx] = 0;
        mute[piez_idx] = true;
        // отключаем разрядку кондера
        #ifdef ANOTHER_MUTE_PIN
          pinMode(stop_pin[piez_idx], INPUT);
        #else
          pinMode(kick_pin[piez_idx], INPUT);  
        #endif   
            
      }
    }
}

Can i have the diagram

grafik

one more sketch

struct drum       // Структура для хранения информации об инструменте
{
  bool IsActive;  // Признак звучания инструмента в данный момент
  byte Note;      // Нота
  int Threshold;  // Порог чувствительности
  int PlayTime;   // Максимальное время звучания (мс)
  unsigned long NoteOffTime; // Время снятия ноты
};

drum Drums[] = // Массив инструментов (не больше 6). Номера мнструментов можно подсмотреть в Википедии: https://en.wikipedia.org/wiki/Percussion_instrument
{
  {0, 26, 300, 50, 0},
  {0, 36, 300, 50, 0},
  {0, 38, 300, 50, 0},
  {0, 48, 300, 50, 0},
  {0, 47, 300, 50, 0},
  {0, 49, 300, 50, 0}
};
int buttonState = 0;
int rt = 0;
int DrumCount = sizeof(Drums) / sizeof(Drums[0]);
int hit = 0;
int i;

void setup()
{
  Serial.begin(115200);
  pinMode(2, INPUT);
}

void loop() {
  buttonState = digitalRead(2);

  if (buttonState == HIGH && rt == 0)
  {

    Serial.write(185);
    Serial.write(4);
    Serial.write(127);

    rt = 10;

  }
  if (buttonState == LOW && rt == 10)
  {

    Serial.write(185);
    Serial.write(4);
    Serial.write(0);

    rt = 0;

  }
  {
    for (i = 0; i < DrumCount; i++)
    {
      hit = analogRead(i); //  Считываем значение с аналогового входа
      if ((hit >= Drums[i].Threshold))  // Если значение не ниже порога срабатывания
      {
        if (!Drums[i].IsActive)    // И если нота еще не звучит
        {
          // то включаем ноту
          Drums[i].IsActive = true;
          MIDI_TX(144, Drums[i].Note, 127); // Посылаем сообщение взятия ноты (144 = NOTE ON)
          Drums[i].NoteOffTime = millis() + Drums[i].PlayTime;
        }
      }
      else if (Drums[i].IsActive) // Иначе (если нет сигнала с аналогового входа), если нота звучит
      {
        // то проверяем не пора ли ее снять
        if (millis() >= Drums[i].NoteOffTime)
        {
          Drums[i].IsActive = false;
          MIDI_TX(128, Drums[i].Note, 127); // Снимаем (128 = NOTE OFF)
        }
      }
    }
  }
}

void MIDI_TX(byte MESSAGE, byte PITCH, byte VELOCITY)
{
  Serial.write(MESSAGE + 9); // 9 - номер MIDI канала для перкуссии
  Serial.write(PITCH);       // Нота
  Serial.write(VELOCITY);    // Громкость
}