Warum funktioniert meine Berechnung nicht?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Hallo!

Der Code hatte das Problem, dass die Verwendung von int und float Variablen zu Präzisionsverlust und falschen Berechnungen führte. Durch die Änderung von Gradkorrektur zu float bleibt die Präzision erhalten. Die Verwendung von 100.0 anstatt 100 sorgt dafür, dass die Division als Float-Division behandelt wird. Dadurch werden die Werte korrekt berechnet, und Gradkorrektur liefert die erwarteten Ergebnisse.

Korrigierte Version deines Codes:

// Variablen für Potentiometer

int Potentiometerwert = 0;

int Potentiometerminimum = 125;

float Potentiometerproz = 0;

int Potentiometeranz = 0;

int Potentiometermax = 896 - Potentiometerminimum;

int Potentiometerdifferenz = 0;

float Gradkorrektur = 0;  // Ändere dies zu float

// Potiprozente berechnen

Potentiometerwert = analogRead(A6);

Potentiometerdifferenz = Potentiometerwert - Potentiometerminimum;

Potentiometerproz = 100.0 / Potentiometermax * Potentiometerdifferenz;  // Verwende 100.0 für float Division

Potentiometeranz = 100 - Potentiometerproz;  // Lass Potentiometerproz als float

Gradkorrektur = Potentiometeranz - 50.0;  // Verwende float subtraction

// Ausgabe zur Überprüfung

Serial.print("Potentiometerwert: ");

Serial.println(Potentiometerwert);

Serial.print("Potentiometerdifferenz: ");

Serial.println(Potentiometerdifferenz);

Serial.print("Potentiometerproz: ");

Serial.println(Potentiometerproz);

Serial.print("Potentiometeranz: ");

Serial.println(Potentiometeranz);

Serial.print("Gradkorrektur: ");

Serial.println(Gradkorrektur);

~ Mr.Callidus

Woher ich das weiß:eigene Erfahrung