Interrupt per contare impulsi non funziona

Allora ho letto attentamente i consigli di tutti, ho riordinato le idee e ho deciso di fare cosi :
A) usare questo codice

#define P_SENSOR 2
volatile int rev=0;
unsigned long tmrLast;

void setup()
{
  Serial.begin(9600);
  pinMode(P_SENSOR,INPUT);
  attachInterrupt(digitalPinToInterrupt(P_SENSOR), contaImpulsi, RISING);
  tmrLast = millis();
}


void loop()
{
  if ( millis() - tmrLast >= 1000 ) {
    noInterrupts();
    Serial.println(rev);
    tmrLast = millis();
    interrupts();
  }
}

void contaImpulsi()
{
  rev++;
}

consigliatomi da docdoc

B) dato che il sensore a infrarossi poteva essere una variabile poco controllabile ho tolto il sensore infrarosso e ho attaccato una calamita ad dischetto e messo un banale sensore ad effetto hall, quindi il dubbio su cosa faccia il sensore non lo ho più.

Risultato:

  • se giro il rotore manualmente ok segna un giro al secondo il che mi ha fatto ben sperare.
  • se accendo il motore mi da 300 giri al secondo che è palesemente sbagliato considerando che il sensore effetto hall ha anche un Led di segnalazione e il Led palesemente sfarfalla, ma con o senza Led quel motore cc tipo quello delle macchinette mini 4wd palesemente non può giare a 300 giri al secondo a carico, con quel carico (la calamita che ho trovato non era esattamente dal peso trascurabile per il motore).

Morale non so che dire ho guardato in lungo e in largo internet e tutti più a meno usano un codice simile e o un sensore effetto hall o un IR e indifferentemente non hanno Arduino che sovrastima i giri per l hall e tiri numeri a caso per l'IR.
Quindi boh sto per deludermi e mollare non so proprio come risolvere, deve essere qualcosa di macroscopico che sbaglio che è scontata per tutti ma non so cosa, il circuito è semplificato all' osso il codice ho usato il vostro e ho cambiato sensore :cry: :cry: :cry: :'(.