e Funkion berechnen

Hi,
ich möchte mit dem Arduino folgende e Funktion berechenen:

f(x)= 9,69*10-32e0,081x

Für x setze ich meinen analogen Eingang (input_val) ein.

int input_val;
int result;

void_loop()

9.69*pow(10,-32)*pow(2.7182818,(0.081*input_val)) = result

Leider klappt das ganze nicht so wie im mir das vorstelle.
Kann mir da jemand helfen?

Gruß

(deleted)

Ich bekomme die Fehlermeldung:

exit status 1
lvalue required as left operand of assignment

Damit kann ich aber leider gar nix anfangen.

11.11 = result;

Wie soll das gehen? Die Fehlermeldung sagt genau was falsch ist

Du kannst auch mal nachschlagen was lvalues und rvalues sind. z.B.:

el_vino:
Ich bekomme die Fehlermeldung:
exit status 1
lvalue required as left operand of assignment
Damit kann ich aber leider gar nix anfangen.

Du hast die Dinge vor und nach dem Gleichheitszeichen vertauscht.

Gruß

Gregor

Außerdem fehlt ein Semikolon und geschweifte Klammern { }

Die Konstante 9,69*10-32 schreibt man auch besser als Konstante: 9.69E-32
und für ex gibt es die Funktion exp(x) exp(1) würde deine 2,718 liefern...

Wenn input_val won einem Analog-Eingang kommt, kann es einen Wert zwischen 0 und 1023 annehmen.
0.081*input_val geht dann bis 82,863, was viel ist für eine Arduino 32 bit float Berechnung von e82 (Nachtrag: Aber das ist eher ein Problem für Serial.print)

Der Datentypintfür das Ergebnis result ist merkwürdig.

Danke das hat geholfen.
War mir nicht bewusst, dass das "Ergebnis" vorne stehen muss.

Habe das Semikolon nur vergessen mit zukopieren und aus dem int für result später noch ein word gemacht.

aus dem int für result später noch ein word gemacht

OK. Das wirst du wissen.
word ist uint16_t, immerhin vorzeichenlos und deutet an, dass es wohlüberlegt ist :slight_smile:

War eher verwundert, dass du aus der Multiplikation 10-31 * 1032, was gerade knapp in den float Wertebereich 10-38 ... 1038 passt, eine Ganzzahl (100 .. 104) machst.
Ein weiter Bereich des Analog-Eingangs (0 .. 1023) wird da auf den Wert 0 abgebildet. Und der oberste Bereich gibt einen Überlauf.

Bisschen Excel spielen zeigt:

bis 881 -> 0
    882 -> 1
   1000 -> 14594
   1018 -> 62715
alles ab 1019 -> Überlauf ohne Fehlerhinweis

Wofür ist das denn? Woher kommt denn der Analog-Eingang?