Mike74:
comment l'appliquer à ce code qui permet de lire et d'afficher la vitesse rpm :
merci
unsigned byte rpmcount;
float rpm, rpmFiltre;
// Ajuster la valeur suivante entre 0 et 1.0
// plus la valeur est faible plus la mesure actuelle est prépondérante et donc le résultat suit de plus près les variations de l'entrée
// plus la valeur est élevée plus l'historique est prépondérant et donc les variations rapides de l'entrée sont atténuées
float coef = 0.5;
unsigned long timeold;
void setup()
{
Serial.begin(9600);
attachInterrupt(0, rpm_fun, RISING);
}
void loop() {
if (rpmcount >= 20) {
rpm = 60*1000/(millis() - timeold)*rpmcount;
rpmFiltre = lpfilter(rpm, coef, rpmFiltre );
timeold = millis();
rpmcount = 0;
Serial.println(rpm);
}
void rpm_fun()
{
rpmcount++;
//Each rotation, this interrupt function is run twice
}
float lpfilter(float data, float filterVal, float filteredVal){
if (filterVal > 1){
filterVal = .99;
}
else if (filterVal <= 0){
filterVal = 0;
}
filteredVal = (data * (1 - filterVal)) + (filteredVal * filterVal);
return filteredVal;
}