tres botones, activar un motor con diferentes velocidades

Hola, tengo que hacer una programacion donde lleve tres botones y un motor, cada boton debe tener su configuracion, uno que sea despacio, otro medio y el ultimo toda la velocidad, hice esta programacion pero no me sale, sera que algo esta mal

int pulsador=3;
int pulsador2=4;
int pulsador3=5;
int motor=13;

void loop() {
  pinMode(pulsador, INPUT);
  pinMode (pulsador2, INPUT);
  pinMode (pulsador3, INPUT);
  pinMode(motor,OUTPUT);
}

void setup() {
 if (digitalRead(pulsador)==HIGH) 
{
pulsador=HIGH;
pulsador2=LOW;
pulsador3=LOW;
digitalWrite(motor,HIGH); //Enciende el motor we <]:{v 
delayMicroseconds (8);
digitalWrite (motor,LOW);
delayMicroseconds(2);
}
if (digitalRead (pulsador2)==HIGH)
{
pulsador2=HIGH;
pulsador=LOW;
pulsador3=LOW;
digitalWrite(motor,HIGH); //Enciende el motor we <]:{v 
delayMicroseconds (5);
digitalWrite (motor,LOW);
delayMicroseconds(5);
}
if(digitalRead (pulsador3)==HIGH)
{
pulsador3=HIGH;
pulsador=LOW;
pulsador2=LOW;
digitalWrite(motor,HIGH); //Enciende el motor we <]:{v 
delayMicroseconds (2);
digitalWrite (motor,LOW);
delayMicroseconds(8);
}
else
{
//Pulsador NO oprimido
digitalWrite(motor,LOW); //Apaga la madre >:v
}
}

Lo que estas haciendo es que al pretgar el boton (cualquiera) activas el motor durante x microsegundo (esto varía en función del pulsador) y lo paras, al ser microsegundos ni lo vas a ver activarse porque no le va a dar tiempo. Entiendo que lo que quieres hacer es que al mantener pulsado el pulsador 1 el motor ande despacio, al mantener pulsado el boton 2 ande a una velocidad media y al mantener pulsado el boton 3 ande a máxima velocidad. Bien para esto deber usar una salida analógica e ir variando el el valor desde 0 a 255. A parte de que tienes el setup y el loop cambiados, prueba lo siguiente:

int pulsador=3;
int pulsador2=4;
int pulsador3=5;
int motor=13;

void setup() 
{
  pinMode(pulsador, INPUT);
  pinMode (pulsador2, INPUT);
  pinMode (pulsador3, INPUT);
  pinMode(motor,OUTPUT);
}

void loop() 
{

   //Pulsador NO oprimido
   analoglWrite(motor,0); //Para motor


   while (digitalRead(pulsador)==HIGH)
   {
      analoglWrite(motor,50); //Motor a velocidad lenta
   }
   while (digitalRead (pulsador2)==HIGH)
   {
      analoglWrite(motor,125); //Motor a velocidad media
   }
   while(digitalRead (pulsador3)==HIGH)
   {
      analoglWrite(motor,255); //Motor a velocidad alta
   }
}