Bakgrund: Jag använder en analog trycksensor med ett intervall från 0-100PSI returspänningsvärden .44v till 4.44v. Det är utomhus (eller 0 PSI) spänning på signalstiftet är 0,47 volt. Jag har en funktion som subtraherar den .47v (för att göra noll) och sedan multiplicerar den med 25 (25 PSI per volt). På grund av signalbrus eller andra faktorer returnerar min funktion ibland ett negativt tal, vilket gör kaos på min matematik. Jag skulle vilja returnera värdet 0 när min förskjutna matematik returnerar ett negativt tal, men jag har problem med det.
Koden som jag skrev som inte fungerar:
dubbel EngineOilPressure () {// infoga oljetryckkod här intavläsning = analogRead (sensorPin3); flottörspänning = avläsning * 5,0; spänning /=1024.0; Serial.print (spänning); Serial.println ("volt"); if (spänning-.47 < 0) {float voltadj = 0; } annat {float voltadj = (voltage-.47); } flyttryckP = voltadj * 25; returnera PSIToPascal (pressureP);}
Felet som jag får är
dynamic_engine.pde: I funktion 'double EngineOilPressure ()': dynamic_engine.pde : 41: 23: fel: 'voltadj' förklarades inte i detta omfång Felkompilering.
Koden som fungerar men ibland returnerar ett mycket fel värde:
dubbel EngineOilPressure () {int-läsning = analogRead (sensorPin3); flottörspänning = avläsning * 5,0; spänning /=1024.0; Serial.print (spänning); Serial.println ("volt"); flottörtryckP = (spänning - .47) * 25; returnera PSIToPascal (pressureP);}