Duda en valores para censo con "map" máximo y mínimo del sensor SOLUCIONADO

Buenas amigos, soy nuevo en este foro de Arduino, ojala puedan echarme la mano en algunas dudas que me surgen poco a poco ya que me es necesario aprenderlo para la universidad, aun que debo decirles que ya le agarre cariño a mi Arduino UNO y tengo en mente ya algunos proyectos aun que sencillos pero buenos. Bueno al grano, estoy trabajando con un sensor ultrasonico HC-SR04 y un servomotor de 180°, estoy censando lecturas del ultrasonico con la función "map" todo bien hasta ahí, logro el objetivo que es que mi máxima distancia que detecta el sensor son 51 cm. y conforme va disminuyendo la distancia del sensor, el servo va moviendose de forma descendiente desde 90° hasta su mínimo de 0° en relación a la distancia captada del sensor hasta llegar a 0 cm, y en "monitor serie" aparecen bien las lecturas, sensor 51 y posición del servo en 90°, pero aquí mi problema, quiero que la máxima distancia de mi sensor en "map" sea de 20 cm que a partir de ahí el servo comience a disminuir su angulo, pero al cambiarle 51 por 20 cambia la proporcionalidad con la posición establecida del servo (pos=map(distancia,20,0,90,0)) y en monitor serie ya no es proporcional, me aparece 51 con 229 sel servo, ya intente cambiar valores máximos y mínimos del servo pero nada, me pareció ver que hay una formula para sacar lo proporcional al valor máximo y mínimo del sensor, pero ya me desespere, ya aplique reglas de 3 a ver si por ahí iba pero no . jeje. ojala alguien me pueda echar la mano, se que resultara algo tanto sencillo que jamas paso por mi cabeza, y de antemano les ofrezco una disculpa, jeje aquí les dejo mi código. Saludos!

#include <Ultrasonic.h>
#include <Servo.h>
Ultrasonic ultrasonic(10,A0); // (Trig PIN,Echo PIN)
Servo myservo; 
int pos = 0;
long distancia=0 ;

void setup() {
  Serial.begin(9600);
 myservo.attach(11);
 myservo.write(pos); 
}

void loop() {
  distancia = ultrasonic.Ranging(CM);
 
  pos=map(distancia,51,0,90,0);
  myservo.write(pos); 
  Serial.print("Ultrasonico=");
  Serial.print(distancia);
  Serial.print("\t posicion");
  Serial.println(pos);
  delay(100);
}

Yo haría esto ya que no te interesa lo que pase luego de 20 leido por tu sensor ultrasónico, simplemente lo trunco de este modo

Previo a map

   distancia = ultrasonic.Ranging(CM);
   if (distancia > 20) distancia = 20;
  pos=map(distancia,20,0,90,0);

Asunto termindo

surbyte:
Yo haría esto ya que no te interesa lo que pase luego de 20 leido por tu sensor ultrasónico, simplemente lo trunco de este modo

Previo a map

   distancia = ultrasonic.Ranging(CM);

if (distancia > 20) distancia = 20;
 pos=map(distancia,20,0,90,0);




Asunto termindo


> Muchas gracias, si me funcionó, me estaba complicando mucho la vida, jajaja creo hubiera empezado desde truncar la distancia del sensor. Saludos y agradezco tu atención.

Si esta resuelto edita el titulo y ponle SOLUCIONADO