Comando di un motore passo-passo con pulsanti

Il funzionamento è il seguente: - se il pulsante P1 è allo stato logico alto e allo stesso tempo anche il pulsante P2, il motore gira in un senso - se il pulsante P3 è allo stato logico alto e allo stesso tempo anche il pulsante P4, il motore gira nel verso opposto

int P1 = 2;
int P2 = 3;
int P3 = 4;
int P4 = 5;
int MP1 = 53;
int MP2 = 52;
int MP3 = 51;
int MP4 = 50;

void setup(){
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(53, OUTPUT);
  pinMode(52, OUTPUT);
  pinMode(51, OUTPUT);
  pinMode(50, OUTPUT);
}

void loop(){


  if(digitalRead(2) == HIGH && digitalRead(3) == HIGH);
{
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, HIGH);
   delay(5);
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, HIGH);
   digitalWrite(MP4, LOW);
   delay(5);
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, HIGH);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, LOW);
   delay(5);
   digitalWrite(MP1, HIGH);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, LOW);
   delay(5);
}
  
  if(digitalRead(4) == HIGH && digitalRead(5) == HIGH);
{
   digitalWrite(MP1, HIGH);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, LOW);
   delay(5);
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, HIGH);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, LOW);
   delay(5);
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, HIGH);
   digitalWrite(MP4, LOW);
   delay(5);
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, HIGH);
   delay(5);
}
}

il problema? non funziona =( grazie in anticipo per eventuali risposte...

Ok sono riuscito a risolvere il problema, adesso però ne devo affrontare un altro... Praticamente quando gli INPUT AR0 e TE1 sono allo stato logico alto, il motore gira infinite volte, ecco dovrei cercare un modo per dirgli "fai solo tot passi e poi fermati" Qualche suggerimento? :~

il codice è il seguente

int MP1 = 50; // pin motore passo-passo
int MP2 = 51;
int MP3 = 52;
int MP4 = 53;  
int val1 = 0;  
int val2 = 0;
#define AR0 5 
#define TE1 4

void setup() {  
  pinMode(MP1, OUTPUT);
  pinMode(MP2, OUTPUT);
  pinMode(MP3, OUTPUT);
  pinMode(MP4, OUTPUT);  
  pinMode(AR0, INPUT);   
  pinMode(TE1, INPUT);  
  
}  
  
void loop() {  
  val1 = digitalRead(AR0);  
  val2 = digitalRead(TE1);
  
   
  if ( val1 == HIGH && val2 == HIGH ) {  
   digitalWrite(MP1, HIGH);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, LOW);
   delay(5);
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, HIGH);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, LOW);
   delay(5);
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, HIGH);
   digitalWrite(MP4, LOW);
   delay(5);
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, HIGH);
  }  
  else {  
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, LOW);
   delay(5);
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, LOW);
   delay(5);
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, LOW);
   delay(5);
   digitalWrite(MP1, LOW);
   digitalWrite(MP2, LOW);
   digitalWrite(MP3, LOW);
   digitalWrite(MP4, LOW); 
  }  
}

ciao
metti il codice che muove il motore all’interno di un ciclo FOR che andrai ad attivare con la pressione simultanea dei 2 tasti

if ( val1 == HIGH && val2 == HIGH ) {  
   for ( int x = 0; x<200; x++){
          // muovi il motore
      }
   }

ciao
pippo72