Mir geht gerade folgender Gedankengang durch den Kopf:
Du schreibst im Programm im Kommentar:
int x // Drehzahl für die Weiterbeschleunigung
Wenn jetzt deine Rampe zwar einerseits langsam hochläuft, dann müsste es gehen, dies in eine weitere Abhängigkeit von x zu setzen.
Sauber gemappt sollte ein bestimmtes x einem bestimmten servoWrite Wert entsprechen.
Wenn man ihm also nun sinngemäß sagt.
if servoWrite Wert kleiner als dem aktuellen x entsprechend, dann Rampe steil
else if servoWritewert >= dem aktuellen x Wert, dann Rampe flach.
Effekt:
Du rollst sagen wir 40 von 50 möglichen Km/h, nimmst Gas weg
ServoWrite Wert im Keller, X relativ hoch, leicht absinkend durch "Ausrollen"
Du gibst Gas, dein ServoWrite weg fährt steil hoch, bis er dem aktuellen X entspricht,
dann greift else if und der servoWrite Wert steigt wieder langsam, so wie die Rampe es vorgibt.
Steil hoch meint hier ebenfalls eine Rampe, die aber in etwa so bei 0,2 Sekunden im Hochlauf liegt, um es nicht zu ruckartig zu machen, der 100cc ist ja ein Torque-Monster.So wäre die Steile Rampe immer nur dann am Zuge, wenn bereits Drehzal der Räder anliegt, servowrite aber noch im Keller ist.
Aus dem Stand wären eide bei "Startbedingung" und damit als == vergleichbar, und die langsame Rampe wäre am Zug.
Kleine Differenz als Sicherheit einbauen, und dann sollte es laufen.
Der ESC spielt da mit, da sehe ich nicht das Problem.
Die Bremse des ESC kannst ja aus bekannten Gründen her eh nur bedingt, wenn nicht gar gar nicht nutzen, allein schon, wegen ihrer Startbedingung, das macht hier auch kaum Sinn, weil nicht regelbar.
In Ermangelung an Zeit und Hirnkapazität auf Grund des akuten Koffeinmangels als erste Ableitung der aktuellen Uhrzeit fühle ich mich allerdings nicht in der Lage, das jetzt in Code umzusetzen.