Hallo teHIngo

Mit der Zeit ist dein Programm einfach zu umfangreich um es mal "auf die Schnelle" zu korrigieren. Wir haben alle unsere eigenen Projekte mit denen wir uns beschäftigen und es kostet eben viel Zeit sich in fremde Programme einzudenken.

Wenn es nicht funktioniert must du das selbe machen wie wir auch: Das Programm zerlegen und die einzelnen Teile testen. Stück für Stück, Zeile für Zeile, Befehl für Befehl. Alles nochmal überdenken, Formulierungen, Klammern, Indexe, Grenzwerte, Datentypen... eben alles. Klar, das dauert Zeit und ist Mühselig, aber anders geht es nicht.

Inzwischen habe auch gemerkt dass beim Ermitteln der Startwerte ein Feldwechsel stattgefunden hat, der asuro sich also auch bewegte. Aber obwohl du recht umfangreiche Kommentare eingefügt hast, man muss sich echt bemühen um die Zusammenhänge zu verstehen. Ein Beispiel:

/* Hier wird geschaut, ob die Schwelle übertreten wird, falls ja hat Umdrehung stattgefunden */
Aha. Und dann kommt das:
if((odoMemL[0]>odoMemL[1] && odoMemL[1]>odoMemL[2]) && (((odoMemL[1]/testErg[0])<1.05) && ((odoMemL[1]/testErg[0])>0.95)))
{
cntsL++;
}
else if((odoMemL[0]<odoMemL[1] && odoMemL[1]<odoMemL[2]) && (((odoMemL[1]/testErg[0])<1.05) && ((odoMemL[1]/testErg[0])>0.95)))
{
cntsL++;
}
(Brauchst du nicht erklären, soll nur ein Beispiel sein ;)

Denn Rest können wir uns selbst erarbeiten. Woher soll ich wissen, was du dir gedacht hast? OK, auf- oder absteigende steigende Werte, Unterschied um einen Faktor 0,05. Aber warum? Warum drei Werte? Warum 0,05? Das ist bei dir gewachsen, wir müssen das nachvollziehen und dann noch erkennen, was an deiner Idee nicht funzt.

Ich mache nochmal einen Anlauf, aber ich befürchte, du mußt das letztlich selbst lösen. Die Grundlagen dazu hast du ja offensichlich, die Hilfsmittel auch. Viel Erfolg

Gruß

mic