Proyecto generador de aromas, no consigo activar los motores mediante un botón.

Buenas tardes, estoy tratando de realizar un generador de aromas usando un Arduino Uno. Tengo tanto el programa como el montaje, pero no consigo unirlos. Este montaje debe activar un motor stepper (el que acciona un spray) y a continuación se activa un ventilador durante 10 segundos con la intención de que esparza el aroma.

Mi problema es que al pasar el código al Arduino y hacer el montaje, este no funciona (al pulsar el botón no ocurre lo esperado, es decir, no activa el motor stepper ni el ventilador), y no se ver donde puede estar el error.

A continuación adjunto una imagen de mi montaje y el código.

const int boton = 3; 

const int analogPin = A1; 
const int pwmPIN = 9;   
      int pot=512; 
      int percent; 
      int control=0; 
const int T=4000; 
      int Wpulse = T/20; 
      int last_Wpulse;
      bool btn=0; 

#define IN1  7
#define IN2  6
#define IN3  5
#define IN4  4

int steps_left=4095;
boolean Direction = true;
int Steps = 0;

int Paso [ 4 ][ 4 ] =
    {   {1, 1, 0, 0},
        {0, 1, 1, 0},
        {0, 0, 1, 1},
        {1, 0, 0, 1}
     };

void setup() {
    pinMode (boton,INPUT);

    Serial.begin(9600);
    Serial.println("################################");   
    Serial.println("####### Generador PWM ##########");    
    Serial.println("################################");  
    pinMode(pwmPIN, OUTPUT);  


    Serial.begin(115200);
    pinMode(IN1, OUTPUT); 
    pinMode(IN2, OUTPUT); 
    pinMode(IN3, OUTPUT); 
    pinMode(IN4, OUTPUT); 
}

void stepper()    
{
  digitalWrite( IN1, Paso[Steps][ 0] );
  digitalWrite( IN2, Paso[Steps][ 1] );
  digitalWrite( IN3, Paso[Steps][ 2] );
  digitalWrite( IN4, Paso[Steps][ 3] );
  
  SetDirection();
}

void SetDirection()
{
    if(Direction)
        Steps++;
    else 
        Steps--; 
     
    Steps = ( Steps + 7 ) % 7 ;
} 
void loop() {

  while (control==0){
    btn =  analogRead(boton);
    if(btn==1){
    control=control++;
     }
   }
  
   if (control==1) {
 
   while(steps_left>0)
         {
           stepper() ;    
           steps_left-- ;  
           delay (1) ;
         }
      delay(300);
      Direction=!Direction;
      steps_left=4095;
    
 
   pot =analogRead(analogPin); 
   percent = map(pot, 0, 1023, 0, 100); 
   Wpulse = T * percent/100;    
 
   if (Wpulse!=last_Wpulse) { 
       last_Wpulse = Wpulse;
       serial();               
   }else{
       digitalWrite(pwmPIN, HIGH);
       delay(10000);     
       digitalWrite(pwmPIN, LOW);  
       control=control--;
       btn=0;
       
   }

   }
  
 }
 

void serial() { 
   Serial.print ("Potenciometro = ");
   Serial.print (percent, DEC);
   Serial.print ("% (");
   Serial.print (pot);        // valor raw entrada analogica 0-1023
   Serial.print (") -> ");  
   Serial.print (Wpulse);
   Serial.println(" microsegundos ");  
}

Cualquier ayuda es bien recibida.
Muchas gracias.