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ß
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 Datentypint
fü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 
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?