Servo condicionado su recorrido a un pulsador

Hola a todos, no doy con la forma de implementar el programa adecuado y espero que me ayudeis. Lo que quiero conseguir es que un servo de 180º de recorrido, cuyo movimiento es implementado por un potenciometro, en el momento en que un pulsador este conectado, el servo se mantega en ese ángulo, indendientemete de que el valor del potenciometro sea de mayor ángulo, hasta que el pulsador sea desconectado y vuelva a seguir el servo al potenciometro.

Ejemplos:

Potenciometro con un valor de 30º del servo, vamos incrementado ese valor y en 40º se activa el pulsador, por tanto el servo se fijará en ese ángulo, mientras que el valor del potenciometro sea mayor a 40º, en el momento en que el potenciometro tenga un valor menor a 40º en el servo, el pulsador será desactivado (el pulsador no se desactiva por software, sino por hardware) y seguirá el valor del potenciometro.

Los ángulos de fijación del servo varian según cuando se active el pulsador. (el pulsador se activará y se desactivará como he dicho anteriormente, de forma física, sin implementación software.

Gracias, y a ver que se os ocurre para ayudarme.

Por favor, pega fotos y tu sketch para entenderte mejor.

El adivino del foro está de vacaciones!

no tengo el sketch como tal, porque no se por donde tirar, voy a intentar implementar todo lo que pueda para que os aclareis, aunque no se muy bien como aclararlo mejor

A ver si así lo aclaro más. Imagina una pinza que mueve su apertura mediante un servo. Dicha pinza tiene un pulsador en uno de los extremos. Al coger ese objeto, se pulsa dicho pulsador y hace que el servo no se fuerce e intente cerrar más la pinza. El recorrido del servo se maneja mediante un potenciometro.

La única opción que se me había ocurrido es mediante interrupciones, no se si será viable con un servo

#include <Servo.h>
Servo servo1;
int potenciometro =2;
int sensor=5;

void setup() {
// put your setup code here, to run once:
pinMode (sensor,INPUT);
Serial.begin(9600);
servo1.attach(9);
attachInterrupt (0,Boton,HIGH);

}

void loop() {
// put your main code here, to run repeatedly:
int valpotenciometro = analogRead(potenciometro);
int val = map(valpotenciometro, 0, 1023, 0 ,180);
Serial.print(val);
servo1.write(val);
delay(20);
}

void Boton(){
while (2==1){
}
}