dc motor control joystick

Greetings to the community.
Said a little project. I am wanting to make a pan and tilt system with DC motors.
Gain control by reading analog potentiometers joystic and sending the data to the PWM outputs.
but the bottleneck is in need a ramp acceleration and deceleration.

To be more clear when triggered the need joystic have an acceleration time till the speed set by the joystic and releasing the joystic speed was slow to zero simultaneously.

Here is the code I’m working on, any idea is welcome

//Control de un Joystick velozidad maxima damp
int ejexpin = 4; // Declara pin4 entrada analogica como ejexpin
int ejexmpin = 3; // Declara salida pwm 3 como ejempin
int ejexm2pin = 5; // Delara salida pwm 5 como ejempin2
int ejexd; // delcara ejexd
int vmaxpin = 3; // Declara pin 3 analog como entrada de vmax
int vmax; // Declara vmax como valor de trabajo velozidad maxima
int i;
void setup(){
pinMode(ejexmpin, OUTPUT); // Configura ejempin como salida
pinMode(ejexm2pin, OUTPUT);// configura ejexmpin como salida
void loop(){
vmax = analogRead(vmaxpin);
vmax = map(vmax, 0, 1023, 0, 255); //cambia el valor de la lectua analogica de 0 1203 a 0 255
ejexd = analogRead(ejexpin); // lee el valor analogico de ejexpin y lo traslada a ejexd

// Control del Eje X
if (470 > ejexd) {

ejexd = map(ejexd, 0, 470, vmax, 0); // se cambia el antiguo valor de 255 por el valor de la etiquetqa vmax

else {
if (ejexd > 530) {

ejexd = map(ejexd, 530, 1023, 0, vmax); // se cambia el antiguo valor de 255 por el valor de la etiquetqa vmax

if ( 0 >= i){

for ( i=0; i<=ejexd; i++){ // el valor de i asciende

analogWrite(ejexmpin, i); // se escribe el valor de i en el pin salida pwm

else {
i = 0;


This snippet is only for motor control