Aiuto pin digitale

Ciao a tutti smanetto da circa 2 mesi con arduino, tempo permettendo mi sono tolto dei bei sfizi.
mi intendo abastanza di elettronica ma poco di porgrammazione, ho costruito questo circuito per rilevare i giri del motore dal filo della candela

Quindi sostanzialmente collegandolo a un pin digitale vorrei sapoere come leggere con arduino quante volte al minuto viene attivato il pin gititale.

non sono riuscito a trovare in giri indicazioni potete aiutarmi?

ciao a tutti grazie

Come detto sul sito utilizzerei gli interrupt esterni:
http://arduino.cc/en/Reference/AttachInterrupt
e lo imposti come Rising, ogni volta che hai un impulso questo ti entra in una funzione.

credo di aver capito quindi utilizzando l'esempio basta che invio alla parallela "state" e ho i giri al minuto?
doami se ho tempo ci provo
grazie

Example

int pin = 13;
volatile int state = LOW;

void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE);
}

void loop()
{
digitalWrite(pin, state);
}

void blink()
{
state = !state;
}

scusa ho modificato change con Rising

Example

int pin = 13;
volatile int state = LOW;

void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, RISING);
}

void loop()
{
digitalWrite(pin, state);
}

void blink()
{
state = !state;
}

Praticamente nell'esempio viene eseguita la funzione blink ogni volta che l'interrupt 0 cambia di stato, per il tuo prob magari puoi incrementare una variabile globale ogni volta che si presenta l'interrupt poi nel loop esegui i conti e....

ciao grazie della risposta ma non capisco mi potresti fare un esempio?
non sono ancora cosi' esperto, come facicao ad incrementare una variabile?
se poi la variabile aumenta solamente quando i giri diminuiscono non posso leggo piu' il valore esatto, giusto?
Ciao Paolo

Un esempio è questo dove cont viene incrementato ogni volta che hai un fronte di salita sull'interrupt, ogni 10sec poi tale valore viene salvato in giri_motore che ti esprime i giri in 10 secondi.

int pin = 13;
volatile int cont = 0;
unsigned long time = 0; 
int giri_motore = 0 

void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, pulse, RISING);
  time = millis(); 

}

void loop()
{
  if(millis()>=time+10000){
    giri_motore=cont;
    cont=0;
  }
}

void pulse()
{
  cont = cont+1;
}

capito molto piu' semplice di quello che pensavo grazie di cuore lo provo e vi facci sapere