In der Programmiersprache C bzw C++ gibt es keine Befehle sondern Funktionen.
Wie bekomme ich z.B. ein Offset weg, wenn ich trotz folgender Funktion
druck = (analogRead(A0) - SensorOffset)
eine Abweichung von z.B. 2mbar habe?
Wenn die Abweichung konstant ist indem Du den Offsetwert änderst.
Wenn die Abweichung sich änder indem Du eine genauere A/D Wandler nimmst oder/und einen genaueren Sensor.
kann ich bei einer Abweichung von 2mbar trotz der Funktion druck=(analogRead(A0)-SensorOffset) das Wert bei der Funktion abziehen? wenn ja wie würde ich es bei dieser funktion angeben?
z.B. druck=(analogRead(A0)-SensorOffset)-2 ist das so richtig?
Klar - ist für den Arduino eh nur eine Zahl. (Was die Sache manchmal nicht einfacher macht - was man kann und was Sinn machen würde)
Am Ende der Zeile erwartet der Kompiler aber zwingend ein ;
Auch ich würde die Konstante SensorOffset an meine Bedürfnisse anpassen und nicht einen Wert zusätzlich subtrahieren. Dies weil es klarer im Sketch ist und weil das so in allen berechnungen einfließt und Du nicht jede Formel jedesmal ändern mußt sondern nur den SensorOffset.
Ich versuche zu verstehen wie ich ein offsetfehler korrigieren kann.
So wie ich es aus Euren Kommentar verstehe, soll der wert 102 geändert werden? Aber dann stellt sich die Frage wie ist es wenn ich mehr als ein Sensor habe die unterschiedliche Offsetfehler haben (z.B. erste Sensor 2mbar, zweite Sensor 3mbar)? Dann müsste ich doch einzeln subtrahieren?
Ich möchte gerne verstehen wie man ein offsetfehler programmtechnisch löst ohne an dem sensor was zu machen.
Wenn du mehrere Sensoren hast, dann solltest du die in ein Array stopfen und dort die Kalibrierwerte lagern. Oder auch im EEPROM, welches u.A. genau für solche Zwecke erfunden/eingebaut wurde
Mantra:
Habe ich mehrere Dinge, welche zusammengehören, dann stecke ich sie in eine Struktur.
Habe ich mehrere Dinge/Strukturen, welche gleich (oder hinreichend ähnlich) sind, stopfe ich sie in ein Array(oder einen anderen Container).
Es ist einfacher den Offsetwert am Anfang des Sketches zu bestimmen und nicht mitten im Sketch was dazu oder wegrechnen oder falls in mehreren Stellen verwendet dann müßtest Du an mehreren Stellen korrigieren.
Bei vielen Sensoren (mehr als 2) ist es einfacher ein Array zu benutzen weil man dann die Umrechnung in einer Schleifen machen kann.
uwefed:
In der Programmiersprache C bzw C++ gibt es keine Befehle sondern Funktionen
Es gibt auch noch Operatoren und Anweisungen. Das Problem ist dass Leute das alles zu "Befehlen" vereinfachen. Dadurch gehen die Unterschiede verloren und sie verstehen nicht dass das bestimmte Dinge genau definierten Regeln folgen
Ich habe leider ein weiteres Problem. Ich hab ein Motor (Pumpe) an einem relais von arduino angeschlossen und versuche es mit den Befehl Low auszuschalten. Leider funktioniert es nicht. Er geht bisschen runter, aber leider nicht ganz aus.