int IMP,X;
IMP=128; //Comienza centrado
#define VELOCIDAD 1
while(1)
{
X = read_ADC() //Leo el ADC (8bits)
if(X>140) // Valor Centro(128) + guarda(12), asi para la derecha
{
if( IMP > (255-VELOCIDAD) ) { IMP=255; } // Me asguro que si sumo no supere los limites, sino lo pongo al limite
else { IMP+= VELOCIDAD; }
}
else if ( X<116 ) // Lado izquierdo, Centro - guarda(12)
{
if( IMP < VELOCIDAD ) { IMP=0; } // Cambio la posicion, siempre y cuando pueda ir restando
else { IMP-= VELOCIDAD; }
}
PWM=(IMP/8)+20; // Calculo la posicion en base a IMP que es de 0 a 255 y no incrementando de a 1, es una conversion mas simple ( por la formula podria haber hecho IMP de 0 a 32 )
set_pwm1_duty(pwm); // Seteo duty, si fuera estuvierae en el centro el joystick, el PWM no cambiaria ya que no se modificaria IMP
}