#include <Stepper.h>

#define ledsoldadura 23
#define ledchispa 25
int tiemposoldadura = 0;


int minimobrazo = -100; //invertida
int maximobrazo = 100; //invertida
int contadorbrazo = 0;
int minimotijeras = -100;
int maximotijera = 100;
int contadortijeras = 0;

#define intercambiador 53
int contadorintercambiador = 0;
int estadointercambiador = 0;

//stepper brazo

const int pasosparavuelta2 = 200; // change this to fit the number of steps per revolution

const int vueltaporminuto2 = 15;

const int x_pin = A5; // analog pin connected to X output

Stepper motorbrazo (pasosparavuelta2, 8, 9, 6, 7);

//Stepper plataforma tijeras

const int pasosparavuelta = 200; // change this to fit the number of steps per revolution

const int vueltaporminuto = 10;

const int y_pin = A4; // analog pin connected to X output

Stepper plataformatijeras(pasosparavuelta, 10, 11, 12, 13);

void setup() { 
  pinMode(ledsoldadura, OUTPUT);
  pinMode(ledsoldadura, OUTPUT);
  
  plataformatijeras.setSpeed(vueltaporminuto);
  motorbrazo.setSpeed(vueltaporminuto2);
  pinMode(y_pin, INPUT);
  pinMode(x_pin, INPUT);

  pinMode(intercambiador, INPUT);
  Serial.begin (9600);

}

void loop() {

  estadointercambiador = digitalRead(intercambiador);

  if (estadointercambiador == HIGH){

    contadorintercambiador++;
    delay (200);
    Serial.println(contadorintercambiador);
  }

  if (contadorintercambiador == 0){

    motoresfase1();

  }
}

//****SUBRUTINA MOTORES FASE 1****

void motoresfase1(){

  int horizontal = analogRead(x_pin);
  int vertical = analogRead(y_pin);

  if (contadortijeras > minimotijeras && contadortijeras < maximotijera){
      if (vertical < 300) {
        plataformatijeras.step(-1);
        contadortijeras--;

      } 

      else if (vertical > 700) {
        plataformatijeras.step(1);
        contadortijeras++;

      }
  } 
  
  else if ( contadortijeras == minimotijeras && vertical > 700 ) {
      plataformatijeras.step(1);
      contadortijeras++;
  
  } 
  
  else if ( contadortijeras == maximotijera && vertical < 300 ) {
      plataformatijeras.step(-1);
      contadortijeras--;  

  }

  if (contadorbrazo > minimobrazo && contadorbrazo < maximobrazo){
      if (horizontal < 300) {
        motorbrazo.step(-1);
        contadorbrazo--;

      } 

      else if (horizontal > 700) {
        motorbrazo.step(1);
        contadorbrazo++;

      }
  } 
  
  else if ( contadorbrazo == minimobrazo && horizontal > 700 ) {
      motorbrazo.step(1);
      contadorbrazo++;
  } 
  
  else if ( contadorbrazo == maximobrazo && horizontal < 300 ) {
      motorbrazo.step(-1);
      contadorbrazo--;  

  }

  if (contadorbrazo <= -98){

    soldadura();

  }

  else{
    digitalWrite(ledsoldadura, LOW);
    digitalWrite(ledchispa, LOW);
    tiemposoldadura = 0;

  }
}

//****SUBRUTINA SOLDADURA****

void soldadura(){
  tiemposoldadura++;
  delay (1);

  if (tiemposoldadura == 1){
    digitalWrite(ledsoldadura, HIGH);
  
  }

  if (tiemposoldadura == 301){
    digitalWrite(ledsoldadura, HIGH);
    digitalWrite(ledchispa, HIGH);
  
  }

  if (tiemposoldadura == 401){
    digitalWrite(ledsoldadura, LOW);
    digitalWrite(ledchispa, LOW);
  
  }

  if (tiemposoldadura == 701){
    digitalWrite(ledsoldadura, HIGH);
  
  }

  if (tiemposoldadura == 1401){
    digitalWrite(ledsoldadura, HIGH);
    digitalWrite(ledchispa, HIGH);
  
  }

  if (tiemposoldadura == 1501){
    digitalWrite(ledsoldadura, LOW);
    digitalWrite(ledchispa, LOW);
  
  }

  if (tiemposoldadura == 1601){
    digitalWrite(ledsoldadura, HIGH);
  
  }

  if (tiemposoldadura == 1901){
    digitalWrite(ledsoldadura, HIGH);
    digitalWrite(ledchispa, HIGH);
  
  }

  if (tiemposoldadura == 2001){
    digitalWrite(ledsoldadura, LOW);
    digitalWrite(ledchispa, LOW);
  
  }

  if (tiemposoldadura == 2401){
    digitalWrite(ledsoldadura, HIGH);
  
  }

  if (tiemposoldadura == 2501){
    digitalWrite(ledsoldadura, HIGH);
    digitalWrite(ledchispa, HIGH);
  
  }

  if (tiemposoldadura == 2601){
    digitalWrite(ledsoldadura, LOW);
    digitalWrite(ledchispa, LOW);
  
  }

  if (tiemposoldadura == 3301){
    digitalWrite(ledsoldadura, HIGH);
  
  }

  if (tiemposoldadura == 3501){
    digitalWrite(ledsoldadura, HIGH);
    digitalWrite(ledchispa, HIGH);
  
  }

  if (tiemposoldadura == 3601){
    digitalWrite(ledsoldadura, LOW);
    digitalWrite(ledchispa, LOW);
  
  }

  if (tiemposoldadura == 3801){
    digitalWrite(ledsoldadura, HIGH);
  
  }

  if (tiemposoldadura == 4301){
    digitalWrite(ledsoldadura, HIGH);
    digitalWrite(ledchispa, HIGH);
  
  }

  if (tiemposoldadura == 4401){
    digitalWrite(ledsoldadura, LOW);
    digitalWrite(ledchispa, LOW);
  
  }

  if (tiemposoldadura == 4501){
   tiemposoldadura = 1;
  
  }
}