Jetzt ist es doppelt gemoppelt. Wenn du ldata und odata getrennt verwendest, steht der letzte Wert (vom Aufnehmen des Bechers) noch in odata[0]. Aber prinzipiell sollte es auch so funtionieren, wenn der Becher nach dem Abstellen noch die selben ODO-Werte erzeugt. Funktioniert es denn nun mit deiner Änderung zufriedenstellend?
Eine Statemachine beschreibt ein Programm das in mehreren aufeinanderfolgenden Schritten ausgeführt wird. Wenn ein Schritt erledigt ist wird der nächste Schritt ausgeführt. Das war wohl im Ansatz auch der Sinn von deinem while(a)...
Lesezeichen