Duda quizas rapida de resolver

Saludos a todos, estoy haciendo un certificador de cables, necesito desplazar un bit y que la placa receptora lea bit a bit que entre e imprima por el serial monitor que paso, ahora e logrado esto hasta ahora, solo necesito que cuando me imprima que paso no lo imprima mas de una vez, aqui esta este sencillo codigo, espero su pronta ayuda:

void setup(){

Serial.begin(9600);

pinMode(2,INPUT); pinMode(3,INPUT); pinMode(4,INPUT); pinMode(5,INPUT); pinMode(6,INPUT); pinMode(7,INPUT); pinMode(8,INPUT); pinMode(9,INPUT);

}

void loop(){

if(digitalRead(2)==HIGH){ Serial.println("paso1"); delay(1000); }

if(digitalRead(3)==HIGH){ Serial.println("paso2"); delay(1000); }

if(digitalRead(4)==HIGH){ Serial.println("paso3"); delay(1000); }

if(digitalRead(5)==HIGH){ Serial.println("paso4"); delay(1000); }

if(digitalRead(6)==HIGH){ Serial.println("paso5"); delay(1000); }

if(digitalRead(7)==HIGH){ Serial.println("paso6"); delay(1000); }

if(digitalRead(8)==HIGH){ Serial.println("paso7"); delay(1000); }

if(digitalRead(9)==HIGH){ Serial.println("paso"); delay(1000); }

}

Hola:
Trataria de emplear una bandera que bloquee un segundo acceso a la impression. La bandera solo se resetea cuando otra entrada es activada. En los 80’s las banderas como esta se empleban con frecuencia en lenguaje ensamblador. Para mi siguen siendo muy utiles en casos como este, las empleo mucho aun cuando hago algo en Processing. No se porque nunca veo que las empleen hoy en dia???
Algo asi: (aunque compila, no se si corra en el caso que tienes armado en particular).

int MinInput=2;
int MaxInput=9;
boolean PrintFlag[8];
void setup()
{
  for (int i=0;i<8;i++)
  {
    PrintFlag[i]=false;
    pinMode((i+2), INPUT);
  }
  Serial.begin(9600);
}

void loop()
{
  for (int i=MinInput; i<MaxInput+1;i++)
  {
    if(digitalRead(i)==HIGH)
    {
      if(PrintFlag[i-MinInput]==false)
      {
        Serial.println("paso "+i);
        PrintFlag[i-MinInput]=true;// Setea (activa) la bandera para que no imprima la proxima vez que detecta la entrada en HIGH.    
        for (int j=MinInput;j<MaxInput+1;j++)
        {
          if((j==i)==false)// Resetea todas las demas banderas cuando alguna se activa.
          {
            PrintFlag[j-MinInput]=false; 
          }         
        }
      }
       delay(1000);
    }
  }
}

Otra cosa: Las banderas evitan en muchas ocasiones tener que utilizar delay() que es una instruccion que ademas de delay, introdude mucha ineficiencia en el programa y lo demora todo, quizas otras instrucciones que no es conveniente demorar. Prueba sin el delay(1000); Quizas ya no se necesite con el codigo presentado.

amigo muchas gracias, prácticamente me hiciste el programa, voy a ver como corre aunque ya probé y compilo, yo no pensé usar el bloque for pero como mayormente se utiliza para contadores, que si para la llegada aun cierto valor x, no se me ocurrió utilizarlo de antemano muchas gracias voy a probar