Compte tour laser (compte tour, compteur de passage ect...)

Ca avance pas mal avec les interruptions :smiley:

J'arrive a compter et a ne rater aucune détection en faible luminosité, mais j'ai plusieurs choses que je ne comprend pas...

Arriver a 20 ou 30 je veut qu'une led s'allume et clignote, hors quand j'arrive a 20, la led clignote mais me bloque le comptage et le programme, je suis obligé de fermer la fenêtre serial et de la ré-ouvrir...

Ensuite, y a t'il un moyen de régler le seuil a partir duquel je passe de LOW a HIGH ? Histoire de pouvoir faire face a plusieurs situation lumineuse ?

int capteur = 2;
volatile int state = LOW; // déclartion d'une variable volatile
int R = 3;
int B = 5;
int V = 4;
int rpm = 0;

void setup()
{
  Serial.begin(9600);
  pinMode(R, OUTPUT);
  pinMode(B, OUTPUT);
  pinMode(V, OUTPUT);
  attachInterrupt(0, compt, RISING); // attache l'interruption externe n°0 à la fonction compt()
}

void loop()
{
  state = digitalRead(capteur);
  digitalWrite(R, state); // la LED reflète l'état de la variable
  while(rpm == 20)
  {
    digitalWrite(B, HIGH);
    delay(100);
    digitalWrite(B, LOW);
   delay(200);

  }
  
  while(rpm == 30)
  {
    digitalWrite(V, HIGH);
    delay(100);
    digitalWrite(V, LOW);
    delay(200);
  }
}

void compt() // la fonction appelée par l'interruption externe n°0
{
  if(state == LOW)
  {
    rpm++;
    Serial.println(rpm); 
  }
}

Après ça il ne me manque qu'à écrire la formule pour me convertir ça en T/min et je fait les tests sur mon ventilo :smiley: