Problema al leer estado de botones (arrray)

Hola, tengo un código pequeñito que debe leer el estado de 10 botones, pero hace una cosa curiosa: cuando lee, por ejemplo en el pin 1, asigna también el mismo valor al pin 6, el 2 al 7, el 3 al 8, etc. y también ocurre a la inversa.

int pin[10] = {2,3,4,5,6,7,8,9,10,11}; 

void setup() {
  Serial.begin(115200);
  for (int i=0; i<10; i++){
    pinMode(pin[i],INPUT_PULLUP);
  }
}

void loop() {
  int i;

   for (i=0; i<10; i++){
      int val = digitalRead(pin[i]);
      if(val==0){
        Serial.print("Pin: ");
        Serial.print(pin[i]);
        Serial.print("\tValor: ");
        Serial.println(val);
        delay(200);
      }
   }
}

En la salida me da los siguientes valores:

Pulsando botón 1:
Pin: 2 valor: 0

Pulsando botón 2:
Pin: 8 valor: 0
Pin: 3 valor: 0

Pulsando botón 3:
Pin: 9 valor: 0
Pin: 4 valor: 0

Pulsando botón 4:
Pin: 5 valor: 0
Pin: 10 valor: 0

Y así sucesivamente. Lo mismo ocurre a la inversa, o sea, pulsando el botón 8:
Pin: 9 valor: 0
Pin: 4 valor: 0

Creo que es un problema de lectura de puertos, pero no doy con la solución. Agradecido si alguien puede echarme una mano.

Y como los tienes conectados?

Se trata de un proyecto más grande (un controlador MIDI), pero al montarlo me daba ese fallo. Probé con este sketch sencillo para comprobar y no liaros con el código original del midi. Voy a revisar la placa de topos por si hay algo mal conectado, que creo que por ahí van los tiros.... Gracias

Pero no has respondido. Como esta conectado cada pulsador?

arkadio009: Hola, tengo un código pequeñito que debe leer el estado de 10 botones, pero hace una cosa curiosa: cuando lee, por ejemplo en el pin 1, asigna también el mismo valor al pin 6, el 2 al 7, el 3 al 8, etc. y también ocurre a la inversa.

Es muy extraño, tu código no es el culpable, por eso Surbyte te pregunta como conectaste los pulsadores y de que tipo son.

Deberian estar conectado entre el pin x (2 a 11) y GND y ser del tipo normal abierto. Es asi ?