Spocky35 a écrit:
Donc c'est logique de placer le goto après la (première) mesure P_n si celle -ci est erronée. Je me coucherai moins con ce soir
on revient de loin la


l'ordre chornolique c'est de droite a gauche et de haut en bas comme on lit

apres avoir relu ton code j'ai vu pas mal de truc bizare
donc dans le doute tu peu essayer cela stp
- Code: Tout sélectionner
float alpha=0.6666; // un filtrage pas trop agressif (env 3 point)
// pour plus de rapidité il faut utilisé une arytmetique en virgule fix pas float
void loop(){
uint32_t p;
uint32_t rpm;
//mesure periode du signal sur la pin "3" en se basant sus les front positif "HIGH" periode max 60ms
per=periodeIn( 3, HIGH, 600000);
// cas où p_n est inférieure à 6000 rpm (seuil pour le test moto) on fait rien
if (p> 10000) {
Serial.println ("pulse >10000 ");
goto nopulse;
}
rpm=60000000/p;
// rmp >12500 c'est une mesure aberante on fait rien
if( rpm >12500 ){
Serial.println ("rpm inst > 12500") ;
goto nopulse;
}
// on filtre la valeurs instantané
RPM=alpha*RPM+(1.0-alpha)*rpm;
// en virgule fix ca serai qq chose comme
// alpha_fix = 512*0.66;
// RPM=(RPM*alpha_fix+ (512-alpha_fix)*rpm*512)/512
// RPM_entier=RPM/512
Serial.println( RPM);
nopulse:
delay (5);
}