Gast
#7223241
Hallo, ich schreibe gerade eine Funktion in der programmier Sprache in c. Die Daten sind in einem Array mit 16 Elementen und die Werte sind INT mit einem Wertebereich von 0 bis 29. Diese Daten werde ca. alle 25ms aktualisiert. Diese Funktion wird ca. alle 4ms bis 6ms aufgerufen. In dieser Funktion sollen die alten Daten sich in x Schritten den neuen Daten nähern. In dieser Funktion ist die Information bekannt, ob neue aktualisierte Daten vorhanden sind. Es ist auch bekannt in wie vielen Schritten sich die alten zu den aktualisierte Werten nähern soll. Wichtig ist das die die INT Zahlen ganze Zahlen bleiben. Ich möchte dies in einem Beispiel beschreiben. Daten[0].Wert bis Daten[15].Wert bekommen neue aktualisierte Daten. Alle 15 Daten sind im Wertebereich von 0 bis 29. Das Beispiel beschreibt die Nährung von dem Array BIN 0 Muss aber für jedes Array bin für sich auch funktionieren. Der alte Wert in Daten[0] war 5. Der aktualisierte Wert in Daten[0] ist 18. Schritte sind 6. Die Funktion wird nun alle 4ms bis 6ms aufgerufen: Meine Idee erstmal die Differenz ausrechen: Die Wäre dann 13. Aber diese Differenz nun durch 6 Schritte zu teilen bedeutet 2 rest 1. Schritt 1: Neuer Wert[0] = Alter Wert[0] + 2; Schritt 2: Neuer Wert[0] = Neuer Wert[0] + 2; Schritt 3: Neuer Wert[0] = Neuer Wert[0] + 2; Schritt 4: Neuer Wert[0] = Neuer Wert[0] + 2; Schritt 5: Neuer Wert[0] = Neuer Wert[0] + 2; Schritt 6: Neuer Wert[0] = Neuer Wert[0] + 2 + 1; Die Nähren von dem alten Wert zu dem neuen Wert soll so gleichmäßig wie möglich erfolgen. Bei diesem Beispiel war die Differenz positive, da die neuen Daten größer waren als die alten. Dies kann aber auch anders sein, dass die neuen Daten kleiner sind wie die alten Daten. Zudem bin ich am überlegen ob eine Differenz größer 1 sein muss, damit eine Nährung an den neuen Wert erfolgt. Dies müsste einstellbar sein. Ich brauche eure Hilfe diesen c Code zu schreiben.
