You don't take away the inrush current by starting the motor slowly like as you do. That is normally the function of a soft start, take away or reduce the inrush current when the rotor is stalled. You can notice that your solution does not work because at 3:17 in the video the motor kicks in (shakes when it starts). Please measure such results before posting it as a solution. The mosfet cannot start slowly, it is only on at a particular voltage (trigger point). It is not a transistor. This whole setup doesn't make sense.What you need to do is feed a PWM signal to the mosfet. Turn it on and off and ramp it up by frequency. In your code: int soft[] = {0,25,50,75,100,125,150,175,200,225}; // PWM values These are analog values, not PWM values. You only change the "amplitude" of the block signal however not the frequency of the default PWM settings. analogWrite(motorpin, soft[n]); Changes the output voltage on an ANALOG pin, not the PWM. You are using D9 (a DIGITAL pin) as motorpin. The are so many things incorrect. Do some research and revise the project or delete it.