// Arduino pin numbers
const int SW_pin = 13; // digital pin connected to switch output
const int X_pin = A0; // analog pin connected to X output
const int Y_pin = A1; // analog pin connected to Y output
const int Speed_pin=A2;
const int Reset_pin = 4;
int EtatX;
int EtatY;
int EtatReset;
int Speed;
int speedF;
int speedR;
int EtatSwitch=LOW;
int timer=10;  
int MoteurX_dir=5;
int MoteurX_pas=2;
int MoteurY_dir=6;
int MoteurY_pas=3;
int Intx=0;
int i=0;
int j=0;
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
  pinMode(SW_pin, INPUT_PULLUP);
  pinMode(Reset_pin,INPUT_PULLUP);
  digitalWrite(SW_pin, HIGH);
  lcd.begin(16, 2);
  Serial.begin(9600);
  lcd.print( "Axe X: ");
  lcd.setCursor(0, 1);
  lcd.print( "Axe Y: ");
  pinMode(MoteurX_dir,OUTPUT);
  pinMode(MoteurX_pas,OUTPUT);
  pinMode(MoteurY_dir,OUTPUT);
  pinMode(MoteurY_pas,OUTPUT);

}

void loop() {
  EtatX=analogRead(X_pin);
  EtatY=analogRead(Y_pin);
  EtatX=map(EtatX,0,1023,-1,1);
  EtatY=map(EtatY,0,1023,-1,1);
  EtatSwitch=digitalRead(SW_pin);
  EtatReset=digitalRead(Reset_pin);
  speedF=analogRead(X_pin);
  speedF=map(speedF,512,1023,100,0);
  speedR=analogRead(X_pin);
  speedR=map(speedR,512,0,100,0);
  Speed=analogRead(Speed_pin);
  Speed=map(Speed,0,1023,100,1);
  timer=Speed;
  lcd.setCursor(6, 0);
  lcd.print("        ");
  lcd.setCursor(6, 0);
  lcd.print(i);
  lcd.setCursor(6, 1);
  lcd.print("        ");
  lcd.setCursor(6, 1);
  lcd.print(j);
  lcd.setCursor(10, 0);
  lcd.print("   ");
  lcd.setCursor(10, 0);
  lcd.print(Speed);
  delay(5);

  switch(EtatX){
  
  case -1:
  digitalWrite(MoteurX_dir,LOW);
  for (int a=0;a<1;a++){  
    digitalWrite(MoteurX_pas,HIGH); 
    delay(timer);
    digitalWrite(MoteurX_pas,LOW); 
    delay(timer);
  }
  i=i+1;
  break;

  case 1:
  digitalWrite(MoteurX_dir,HIGH);
  for (int b=0;b<1;b++){
    digitalWrite(MoteurX_pas,HIGH);  
    delay(timer);
    digitalWrite(MoteurX_pas,LOW); 
    delay(timer);
  }
  i=i-1;
  break;

  case 0:
  digitalWrite(MoteurX_pas,LOW); 
  break;
}


 switch(EtatY){
  
  case 1:
  digitalWrite(MoteurY_dir,LOW);
  for (int a=0;a<1;a++){  
    digitalWrite(MoteurY_pas,HIGH); 
    delay(timer);
    digitalWrite(MoteurY_pas,LOW); 
    delay(timer);
  }
  j=j+1;
  break;

  case -1:
  digitalWrite(MoteurY_dir,HIGH);
  for (int b=0;b<1;b++){
    digitalWrite(MoteurY_pas,HIGH);  
    delay(timer);
    digitalWrite(MoteurY_pas,LOW); 
    delay(timer);
  }
  j=j-1;
  break;

  case 0:
  digitalWrite(MoteurY_pas,LOW); 
  break;
}

if(EtatSwitch==LOW){
  
   if(i>0){
   digitalWrite(MoteurX_dir,HIGH);

  for (int c=0;c<i;c++){
    digitalWrite(MoteurX_pas,HIGH);  
    delay(2);
    digitalWrite(MoteurX_pas,LOW); 
    delay(2);
   i=i-1;
    Serial.println(c);    
  }
  
   }
  else{
  digitalWrite(MoteurX_dir,LOW);
   for (int c=0;c<-i;c++){
    digitalWrite(MoteurX_pas,HIGH);  
    delay(2);
    digitalWrite(MoteurX_pas,LOW); 
    delay(2);
    i=i+1;
   }
  }

if(j>0){
   digitalWrite(MoteurY_dir,HIGH);

  for (int c=0;c<j;c++){
    digitalWrite(MoteurY_pas,HIGH);  
    delay(2);
    digitalWrite(MoteurY_pas,LOW); 
    delay(2);
   j=j-1;
    Serial.println(c);    
  }
  
   }
  else{
  digitalWrite(MoteurY_dir,LOW);
   for (int c=0;c<-j;c++){
    digitalWrite(MoteurY_pas,HIGH);  
    delay(2);
    digitalWrite(MoteurY_pas,LOW); 
    delay(2);
    j=j+1;
   }
  }

}
if(EtatReset==LOW){
  i=0;
  j=0;
}
   
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
lcd1:VSS
lcd1:VDD
lcd1:V0
lcd1:RS
lcd1:RW
lcd1:E
lcd1:D0
lcd1:D1
lcd1:D2
lcd1:D3
lcd1:D4
lcd1:D5
lcd1:D6
lcd1:D7
lcd1:A
lcd1:K
gnd1:GND
gnd2:GND
joystick1:VCC
joystick1:VERT
joystick1:HORZ
joystick1:SEL
joystick1:GND
gnd3:GND
A4988
drv1:ENABLE
drv1:MS1
drv1:MS2
drv1:MS3
drv1:RESET
drv1:SLEEP
drv1:STEP
drv1:DIR
drv1:GND.1
drv1:VDD
drv1:1B
drv1:1A
drv1:2A
drv1:2B
drv1:GND.2
drv1:VMOT
stepper1:A-
stepper1:A+
stepper1:B+
stepper1:B-
stepper2:A-
stepper2:A+
stepper2:B+
stepper2:B-
A4988
drv2:ENABLE
drv2:MS1
drv2:MS2
drv2:MS3
drv2:RESET
drv2:SLEEP
drv2:STEP
drv2:DIR
drv2:GND.1
drv2:VDD
drv2:1B
drv2:1A
drv2:2A
drv2:2B
drv2:GND.2
drv2:VMOT
vcc1:VCC
vcc2:VCC
gnd4:GND
gnd5:GND
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
pot1:GND
pot1:SIG
pot1:VCC
gnd6:GND