Berechnung von ADC Werten mit einer Formel als String

In diversen IoT Anwendungen kann man Formeln zur Berechnung der Werte als Text in ein HTML Formular eintragen.
Wie kann ich das in einem Sketch umsetzen?

ADC gibt z.B. 633 zurück und die Formel als String lautet: %adc_value% / 1023 * 3.3
adc_value ist der eingelesene Wert von A0
Wie kann man den String in Rechenoperationen zerlegen und der variable adc_value im Sketch das Ergebnis der Rechenoperation zuweisen?

1023
1024

Einen Formel-Parser bauen.

Also den Formelstring rekursiv auswerten und z.B. zu einer Stackorientierten Zwischensprache umformen.
Irgendwas UPN artiges wird da gerne verwendet.

Hallo,

oder meinst du einen "String" in einen Ganzzahldatentyp umwandeln?
atoi und seine Verwandten.

Nein, kein atoi, sondern wie das hier aus dem Wiki.
Danke für den Link

Stack mit LIFO-Prinzip und Ausgabe-Queue anlegen.

SOLANGE Tokens verfügbar sind:
Token einlesen.
WENN Token IST-Zahl:
Token ZU Ausgabe.
ENDEWENN
WENN Token IST-Funktion:
Token ZU Stack.
ENDEWENN
WENN Token IST-Argumenttrennzeichen:
BIS Stack-Spitze IST öffnende-Klammer:
Stack-Spitze ZU Ausgabe.
FEHLER-BEI Stack IST-LEER:
GRUND (1) Ein falsch platziertes Argumenttrennzeichen.
GRUND (2) Der schließenden Klammer geht keine öffnende voraus.
ENDEFEHLER
ENDEBIS
ENDEWENN
WENN Token IST-Operator
SOLANGE Stack IST-NICHT-LEER UND
Stack-Spitze IST Operator UND
Token IST-linksassoziativ UND
Präzedenz von Token IST-KLEINER-GLEICH Präzedenz von Stack-Spitze
Stack-Spitze ZU Ausgabe.
ENDESOLANGE
Token ZU Stack.
ENDEWENN
WENN Token IST öffnende-Klammer:
Token ZU Stack.
ENDEWENN
WENN Token IST schließende-Klammer:
BIS Stack-Spitze IST öffnende-Klammer:
FEHLER-BEI Stack IST-LEER:
GRUND (1) Der schließenden Klammer geht keine öffnende voraus.
ENDEFEHLER
Stack-Spitze ZU Ausgabe.
ENDEBIS
Stack-Spitze (öffnende-Klammer) entfernen
WENN Stack-Spitze IST-Funktion:
Stack-Spitze ZU Ausgabe.
ENDEWENN
ENDEWENN
ENDESOLANGE
BIS Stack IST-LEER:
FEHLER-BEI Stack-Spitze IST öffnende-Klammer:
GRUND (1) Es gibt mehr öffnende als schließende Klammern.
ENDEFEHLER
Stack-Spitze ZU Ausgabe.
ENDEBIS

Wie bekommt man das jetzt in einen Sketch?

Wie bekommt man das jetzt in einen Sketch?

Irgendwie, mit Finger, Tastatur, Arduino IDE, beispielsweise....
Nennt sich "programmieren".
Muss man dann natürlich auch verstehen, was man da tut.
(ja,das ist schon eine ordentliche Aufgabe, welche du dir da ausgesucht hast)

Es gibt übrigens Systeme, welche Parser, Compiler, Interpreter und Rechenwerk auf einem ATMega328P vereinigen.
Damit wäre das (fast) ein Klacks...

Vielleicht kannste dir da ja was abschauen.....

Danke für den Link, den kannte ich noch nicht.

Gruß Tommy

combie:
Also den Formelstring rekursiv auswerten und z.B. zu einer Stackorientierten Zwischensprache umformen.
Irgendwas UPN artiges wird da gerne verwendet.

Soweit muss man da nicht unbedingt ausholen. Wenn es nur Multiplikation und Division ist kann man das stur von links nach rechts abarbeiten. Mehr ist nur nötig wenn man noch Klammern hat oder auf die Reihenfolge von Punkt- und Strich-Rechnung achten muss.

Da ist dann die Frage wie allgemein das sein muss

Mehr ist nur nötig wenn man noch Klammern hat oder auf die Reihenfolge von Punkt- und Strich-Rechnung achten muss.

Immerhin wollen ja auch so noch Literale und Variablen ausgewertet werden.

Wenn ich das lese: "Berechnung von ADC Werten mit einer Formel als String"
Denke ich, dass so mancher eine 3 Jährige Ausbildung brauchte um sattelfest zu werden.


Andererseits, weiß ich, dass die Anzahl der Formeln, welche man zur Laufzeit verwendet, eher gering ist.
z.B. NTC Temperaturberechnungen, oder Strom/Spannungsmessungen.

Zweiteres ist recht billig, kann man meist mit der Geradengleichung(Lineare Interpolation) erschlagen.
2 Punkt Kalibrierung, dann Steigung und Offset, als Koeffizienten merken.

Ersteres, kann man auch über Koeffizienten erschlagen.

Dann gibts da ja auch noch die LUT (LookUpTable)

--

Aber da Tipps zu geben, ist nicht leicht, da der TE geheim hält, warum er diesen steinigen Formelparser Weg gehen möchte.
Ich finde, sowas sollte man dem C++ Compiler überlassen, denn den haben wir sowieso schon im Einsatz.

Da ist dann die Frage wie allgemein das sein muss

Erstmal stellt sich die Frage, ob das sinnvollerweise überhaupt auf einem Arduino gemacht werden sollte.

@combie
UPN war der richtige Tipp

Wenn ich das lese: "Berechnung von ADC Werten mit einer Formel als String"
Denke ich, dass so mancher eine 3 Jährige Ausbildung brauchte um sattelfest zu werden.

Wie hätte ich mein Vorhaben sonst beschreiben sollen?

Ich habe dann dank google diesen Code gefunden.

Die UPN - Funktion ist nicht für einen Arduino, sondern für einen ESP gedacht.