Contagiri vespa...

Salve a tutti volevo creare un contagiri a led per la mia vespa... avevo creato questo sketch ma risulta non funzionante e da valori sballati...

int ms;
int rpm;
int rpm1;
int pot;
unsigned int timeout=100;
void setup() {
  Serial.begin(9600);
  pinMode(2,OUTPUT );
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(13,INPUT);
  digitalWrite(2,HIGH);delay(60);
  digitalWrite(3,HIGH);delay(60);
  digitalWrite(4,HIGH);delay(60);
  digitalWrite(5,HIGH);delay(60);
  digitalWrite(6,HIGH);delay(60);
  digitalWrite(7,HIGH);delay(60);
  digitalWrite(8,HIGH);delay(60);
  digitalWrite(9,HIGH);delay(60);
  digitalWrite(10,HIGH);delay(60);
  digitalWrite(11,HIGH);delay(60);
  digitalWrite(12,HIGH);delay(60);
  digitalWrite(13,HIGH);delay(60);
  digitalWrite(2,LOW);delay(60);
  digitalWrite(3,LOW);delay(60);
  digitalWrite(4,LOW);delay(60);
  digitalWrite(5,LOW);delay(60);
  digitalWrite(6,LOW);delay(60);
  digitalWrite(7,LOW);delay(60);
  digitalWrite(8,LOW);delay(60);
  digitalWrite(9,LOW);delay(60);
  digitalWrite(10,LOW);delay(60);
  digitalWrite(11,LOW);delay(60);
  digitalWrite(12,LOW);delay(60);
  digitalWrite(13,LOW);delay(500);
  
}
 void loop(){
  ms=pulseIn(13,HIGH);
  rpm=60000/ms;
  Serial.println(rpm);
  if(rpm<9449){
  if(rpm >=1000){digitalWrite(3,HIGH);} else{digitalWrite(3,LOW);}
  if(rpm >=1500){digitalWrite(3,HIGH);} else{digitalWrite(3,LOW);}
  if(rpm >=2000){digitalWrite(4,HIGH);} else{digitalWrite(4,LOW);}
  if(rpm >=3000){digitalWrite(5,HIGH);} else{digitalWrite(5,LOW);}
  if(rpm >=4000){digitalWrite(6,HIGH);} else{digitalWrite(6,LOW);}
  if(rpm >=5000){digitalWrite(7,HIGH);} else{digitalWrite(7,LOW);}
  if(rpm >=5500){digitalWrite(8,HIGH);} else{digitalWrite(8,LOW);}
  if(rpm >=6000){digitalWrite(9,HIGH);} else{digitalWrite(9,LOW);}
  if(rpm >=7000){digitalWrite(10,HIGH);} else{digitalWrite(10,LOW);}
  if(rpm >=8000){digitalWrite(11,HIGH);} else{digitalWrite(11,LOW);}
  if(rpm >=8500){digitalWrite(12,HIGH);} else{digitalWrite(12,LOW);}}
  if(rpm >=9000){
    digitalWrite(2,HIGH);digitalWrite(3,HIGH);digitalWrite(4,HIGH);
    digitalWrite(5,HIGH);digitalWrite(6,HIGH);digitalWrite(7,HIGH);
    digitalWrite(8,HIGH);digitalWrite(9,HIGH);digitalWrite(10,HIGH);
    digitalWrite(11,HIGH);digitalWrite(12,HIGH);digitalWrite(13,HIGH);
    delay(100);
     digitalWrite(2,LOW);digitalWrite(3,LOW);digitalWrite(4,LOW);
    digitalWrite(5,LOW);digitalWrite(6,LOW);digitalWrite(7,LOW);
    digitalWrite(8,LOW);digitalWrite(9,LOW);digitalWrite(10,LOW);
    digitalWrite(11,LOW);digitalWrite(12,LOW);digitalWrite(13,LOW);
    delay(100);
  }
 }

avete qualche soluzione senza utilizzare il comando pulse in?

Servono informazioni... Cosa usi? Quale arduino? Cosa per rilevare i giri e come è montato, con cosa alimenti arduino? Ecc...