DC Motor mit PWM gleichmässig beschleunigen und Abbremsen

Hallo, ich möchte einen DC Motor gleichmässig beschleunigen und Abbremsen lassen. Beschleunigen funktioniert in Richtung A, Abbremsen nicht.
Abbremsen funktioniert in Richtung B, beschleunigen nicht.

Was mache ich falsch

int motorPin1=2;
int motorPin2=3; // PWM
 
void setup(){
  pinMode(motorPin1,OUTPUT);
  pinMode(motorPin2,OUTPUT);
}
 
void motorStop(){
  digitalWrite(motorPin1,LOW);
  digitalWrite(motorPin2,LOW);
  delay(500);
}
 
void loop(){
motorStop();                    // Motor Stop

 digitalWrite(motorPin1, LOW);   // Motor langsam zu schnell
  for (int i=0; i<200; i++){
    analogWrite(motorPin2, i);
    delay(40);
  }
  delay(3000);


 digitalWrite(motorPin1, LOW);   // Motor Schnell zu langsam
  for (int i=200; i<0; i--){
    analogWrite(motorPin2, i);
    delay(40);
  }
  
  motorStop();                    // Motor Stop
 
  
 
 
 
}

Wie hast Du den Motor angeschlossen?

Zum Bremsen muß so ein Motor kurzgeschlossen werden, das geht nicht per PWM alleine.

Wie soll der Motor denn so stoppen? Du musst die Polarität ändern. Stattdessen stopst du nur den Stromfluss. Klar, dass er dann einfach ausdreht. Das geht nur mit einer H Brücke.

Also der Motor läuft ja schon in beide Richtungen.

Es geht nur um den sanften Start bzw. ein sanftes Abbremsen.

So ist er angeschlossen.

Ohne Motortreiber wirst Du nicht weit kommen. Der Motor soll sich ja möglicherweise nicht nur drehen, sondern auch noch irgendwas antreiben. Du hast schon Glück, daß der Arduino noch lebt. Vermutlich brauchst Du später auch noch einen Encoder, der die aktuelle Drehzahl liefert.

Die Drehzahl und Beschleunigung hängt stark von der anzutreibenden Last ab. Versuche im Leelauf sind zwar interessant, liefern für die Anwendung aber keine wesentlichen Anhaltspunkte.