servomotor con tres posiciones segun boton pulsado

Buenas, estoy intentando poner en marcha un servomotor con tres posiciones de funcionamiento según el pulsador que este "on". Con dos no tengo problema porque lo muevo a donde yo quiero, pero el tercer pulsador no ejecuta la orden correcta.

Digamos:
Pulsador 1. actúa y servomotor a posición 180.
Pulsador 2. actúa y servomotor a posición 0.
Pulsador 3. actúa y servomotor a posición 90.

En ningún caso estarán los tres pulsados al mismo tiempo.

Pulsadores en pull down.
Utilizo un arduino nano.

Adjunto código

//Mi configuración de los botones es de tipo "Pull Down", si pulso el botón, pongo 0V en la entrada.


#include  <Servo.h>   //Incluyo la librería "Servo.h"

//__________________________________________________________________________________________

Servo servomotor;  //Creo un objeto llamado servo y los objetos botón 1, botón 2 y botón 3
int boton1 = 2;  
int boton2 = 3; 
int boton3 = 4;
int angulo = 0;   //Variable para el ángulo, inicia en 0

//___________________________________________________________________________________________
//Secuencia de inicial

void setup() {

  Serial.begin (9600); //Inicio el monitor serial para ver la posición en pantalla
  servomotor.attach(7);  //Conecto el servomotor al Pin digital PWM 7 del Arduino.
  pinMode(boton1, INPUT); 
  pinMode(boton2, INPUT); 
  pinMode(boton3, INPUT);
  
  
  servomotor.write(angulo = 90);//Lleva el servo a la posición 90º. Puedo elegir el angulo que quiera.
}
//____________________________________________________________________________________________

void loop() {

  if (digitalRead(boton1) == LOW) //condición "if" Si la entrada boton1 es 0V haz lo siguiente:
  {
    angulo++; //Incrementa el valor del angulo.
    if (angulo >= 179)    //condición "if" Si el angulo es menor o igual a 180 haz lo siguiente:
       {angulo = 180;}   //Estable el angulo en 180º
  }
  if (digitalRead(boton2) == LOW) //condición "if" Si la entrada boton2 es 0V haz lo siguiente:
  {
    angulo--;  //Disminuye el valor del angulo.
    if (angulo <= 2)     //condición "if" Si el angulo es mayor o igual a 0 haz lo siguiente:
       {angulo = 1;}          //El angulo no disminuye mas aya de 0 grados
  }
 if (digitalRead(boton3) == LOW) //condición "if" Si la entrada boton3 es 0V has lo siguiente:
 {
    angulo = 90;   
 }
  
  servomotor.write(angulo);  //Envía las ordenes al servo para que escriba el angulo.
  Serial.println (angulo);   //Imprime en la pantalla monitor serial el angulo.
  delay(10);  // Establece un tiempo de espera en 10 milisegundos.
}

Después de leer varias paginas opte por un código y lo modifique. El que he puesto aqui es una de las pruebas pero he intentado poner diferentes opciones para la tercera condición. Realmente el pulsador 3 lo puedo suprimir ya que lo que quiero que si el botón 1 u 2 no están pulsados el servomotor debe estar en la posición 90.

He probado y no consigo, alguna idea. Parto de una base pobre pero puedo entenderme con electrónica y programación.

Gracias de antemano.

Yo esta librería todavía no la he tocado, pero se me ocurre una pregunta:

¿has probado con otras cifras?

Por ejemplo pulsador1 30º

pulsador2 60º

pulsador3 45º

¿te sucede lo mismo?

Un saludo

de momento si, da igual la configuración. He cambiado hasta las resistencias y los pulsadores. Y como no me fiaba lo he implementado en una placa soldando componentes por si daba problemas la protoboard.

Estas suponiendo que el botón 3 funciona, que tal si no lo hace?

Agrega a tu if () correspondiente al botón 3 esto

Serial.println("Activo boton 3");

y verifica que cuando lo presiones leas Activo Boton 3.