Ca avance pas mal avec les interruptions ![]()
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 ![]()