Ich möchte mir meinem ESP8266 einen Strom messen (über INA219) und an einem Display anzeigen.
… bis dahin funktioniert alles.
Nun mein Problem:
mit Drücken eines Tasters (LOW an einem Pin des ESP) Soll der aktuell gemessene Wert auf 0 gesetzt werden und nur noch das Delta angezeigt werden.
… also die Funktion wie bei einer Küchenwaage mit Tara
Wo ist da Problem ?
Den aktuellen Wert speichern und zukünftig die Differenz anzeigen, also wenn neuer Wert größer den alten Wert davon abziehen, wenn neuer Wert kleiner den neuen Wert vom alten Wert abziehen.
Alternativ auch einen Wert negativ anzeigen.
Es möge vielleicht keine Fehlermeldung beim kompilieren kommen - aber funktionieren ist anders.
Warum:
setzt Du current_mA bei jedem Duchlauf erneut auf 0; um
dann den Wert vom Sensor an die Variable zu übergeben
bearbeitest das Display; um schliesslich
dann den Wert vom Sensor an die Variable zu übergeben
Und gibst die bei jedem Durchlauf erneut aus.
Letzteres kann man machen - alles andere vorher nicht so.
Nun mein Problem:
mit Drücken eines Tasters (LOW an einem Pin des ESP) Soll der aktuell gemessene Wert auf 0 gesetzt werden
… also die Funktion wie bei einer Küchenwaage mit Tara
aktueller Wert = eingelesener Wert
Wenn Taste gedrückt:
Variable=aktueller Wert
aktueller Wert=0
else
Ausgabe(aktueller Wert - Variable)
nicht schwer.
Das was danach kommen soll, hast Du nicht beschrieben.
aktueller Wert = eingelesener Wert
Wenn Taste gedrückt:
Variable=aktueller Wert
aktueller Wert=0
else
Ausgabe(aktueller Wert - Variable)
nicht schwer.
Das was danach kommen soll, hast Du nicht beschrieben.
Ich glaube es geht einfacher:
Zeige immer den gemessenen Wert minus eines Delta (Tara) an.
Am Anfang ist das Delta null.
Wenn Du den Taster drückst (Flankenerkennung) speicherst Du den aktuellen Wert in der Variablen Delta und setzt den gemessenen Strom auf null.
int delta =0;
...
loop(){
...
current_mA = ina219.getCurrent_mA()- delta;
if (taster erste mal gedrückt, L-H Flankenerkennung) {delta = current _mA; current_mA =0;}
Ausgabe current_mA auf Display
...
}