Progetto cancello per esame 5°

Buona sera a tutti, domani avrò un esame e dovrei portare il progetto di un cancello scorrevole. Il problema è che il programma misteriosamente non funziona. C'è qualcuno più esperto in materia che mi potrebbe gentilmente dare una mano ?

Grazie in anticipo, ho estremamente bisogno di aiuto sono disperato entro domani devo portarlo.

define swdx 2 //switch destro su pin 2

int statodx = 0; //stato switch destro

define swsx 3 //switch sinistro su pin 3

int statosx = 0; //stato switch sinistro

define motdx 13 //motore giro orario su pin 13

define motsx 12 //motore giro antiorario su pin 12

int x = 0; //stato

void setup () { Serial.begin (9600); //set to 9600 - connessione pc pinMode (swdx, INPUT); // pin switch dx in input pinMode (swsx, INPUT); // pin switch sx in input pinMode (motdx, OUTPUT); // pin motore in output pinMode (motsx, OUTPUT); // pin motore in output }

/il motivo per cui incremento la X è perchè così posso avere delle fase delineate dello stato del cancello, e ho la possibiltà di inserire un interrupt partendo da una determinata fase/

void loop () { if (x==0) //quando x è 0 fai: { digitalWrite (motdx, HIGH); //accendo il motore dx statodx = digitalRead (swdx); //leggo il valore del fine corsa dx e lo salvo su statodx Serial.print (statodx); //invio il dato che leggo su statodx sul pc if (statodx == HIGH) //se è alto: { digitalWrite (motdx, LOW); //spengo il motore dx x++;//incremento x } } else if (x==1) //se x è 1 fai: { digitalWrite (motdx, LOW);//spengo il motore dx digitalWrite (motsx, LOW);//spengo il motore sx delay (5000); //ritardo 5 secondi x++; //incremento x } else if (x==2)//se x è 2 fai: { digitalWrite (motsx, HIGH);//accendo il motore sx statosx = digitalRead (swsx);//leggo il valore del fine corsa sx e lo salvo su statosx Serial.print (statosx);//invio il dato che leggo su statosx sul pc if (statosx == 1) //se è alto: { digitalWrite (motsx, LOW); //spengo il motore dx x==0; //x ritorna a 0 } } }