memorizzare dentro un' arry lo stato degli ingressi

Ciao, finalmente sono riuscito a testare, ma mi appare una cosa strana.
Da seriale mi arrivano valori continuti, come se ci fosse una istruzione sempre valida.
Dovrei stampare i valori solo quando la variabile next è maggiore o uguale a 9

Il problema è che quella variabile looppa sempre, significa che il ciclo di for è sempre in esecuzione e non quando uno degli ingressi è stato portato in HIGH, mi aiuteresti a capire l' errore?
Grazie

#define N 9

byte inputs[N];
int next = 0;


void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop () {
  for (byte i = 0; i < N; ++i) {
    if (digitalRead (i) && next < N)
      inputs[next++] = i;
  }

  if (next >= 9) {
    for (byte i = 0; i < N; ++i) {
      Serial.println (inputs[i]);
    }
    next = 0;
  }
}