Contexte: J'utilise un capteur de pression analogique avec une plage de 0-100PSI renvoyant des valeurs de tension de .44v à 4,44v. Sa tension à l'air libre (ou 0 PSI) sur la broche de signal est de 0,47 volts. J'ai une fonction qui soustrait ce .47v (pour faire zéro), puis le multiplie par 25 (25 PSI par volt). En raison du bruit du signal ou d'autres facteurs, ma fonction renvoie parfois un nombre négatif, ce qui nuit à mes calculs. Je voudrais renvoyer une valeur de 0 lorsque mon calcul de décalage renvoie un nombre négatif, mais j'ai un problème avec cela.
Le code que j'ai écrit qui ne fonctionne pas:
double EngineOilPressure () {// insérer le code de pression d'huile ici int reading = analogRead (sensorPin3); tension flottante = lecture * 5,0; tension /=1024,0; Serial.print (tension); Serial.println ("volts"); if (tension-.47 < 0) {float voltadj = 0; } else {float voltadj = (tension-.47); } pression du flotteur P = voltadj * 25; return PSIToPascal (pressureP);}
L'erreur que j'obtiens est
dynamic_engine.pde: Dans la fonction 'double EngineOilPressure ()': dynamic_engine.pde : 41: 23: erreur: 'voltadj' n'a pas été déclaré dans cette portéeErreur de compilation.
Le code qui fonctionne mais renvoie parfois une valeur très fausse:
double EngineOilPressure () {int reading = analogRead (sensorPin3); tension flottante = lecture * 5,0; tension /=1024,0; Serial.print (tension); Serial.println ("volts"); pression de flotteur P = (tension - 0,47) * 25; return PSIToPascal (pressureP);}