Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Ayuda con codigo boton de pause motor PaP
#1
Buenos dias, soy nuevo en el foro y tengo un pequeño incoveniente, estoy montando una maquina empacadora con arduino y ramps 1.4, todo trabaja bien, a la perfeccion, estoy en procesode calibracion, pero no he podido encontrar un codigo para pausar y reiniciar los motores paso a paso, con un boton externo, (lleva un pequeño contacto) es para cuando se termino el rollo de empaque la maquina se pause y poderla continuar cuando se coloque el nuevo rollo presionando el mismo boton u otro.
Tambien necesito iniciar el movimiento de un motor cuando se active un final de carrera.
No conozco mucho y los ejemplos, tutoriales o librerias que he logrado encontrar siempre van encaminados a impresoras 3D y sendores de calor y esas cosas.
Adjunte el codigo que estoy utilizando.
Muchas gracias.

#define X_STEP_PIN         54
#define X_DIR_PIN          55
#define X_ENABLE_PIN       38
#define X_MIN_PIN           3
#define X_MAX_PIN           2

#define Y_STEP_PIN         60
#define Y_DIR_PIN          61
#define Y_ENABLE_PIN       56
#define Y_MIN_PIN          14
#define Y_MAX_PIN          15

#define Z_STEP_PIN         46
#define Z_DIR_PIN          48
#define Z_ENABLE_PIN       62
#define Z_MIN_PIN          18
#define Z_MAX_PIN          19

#define E_STEP_PIN         26
#define E_DIR_PIN          28
#define E_ENABLE_PIN       24

#define E_1_STEP_PIN       36
#define E_1_DIR_PIN        34
#define E_1_ENABLE_PIN     30

#define MOTOR_PIN   0 // Spindle motor control pin
#define EMERGENCY_PIN   0 // Emergency button control pin

#define PGM_RD_W(x)   (short)pgm_read_word(&x)

#define SDSS               53
#define LED_PIN            13
#define FAN_PIN            9
#define PS_ON_PIN          12
#define KILL_PIN           -1

int n=0;
int x,y,z,e,e_1=0;
int xmax,ymax,zmax,emax,e_1max=0;

void setup(){

  pinMode(LED_PIN  , OUTPUT);
 
  pinMode(X_STEP_PIN ,OUTPUT); //Indicamos que los pines son de salida
  pinMode(X_DIR_PIN ,OUTPUT);
  pinMode(X_ENABLE_PIN ,OUTPUT);
  pinMode(X_MIN_PIN ,INPUT_PULLUP);

  pinMode(Y_STEP_PIN ,OUTPUT); //Indicamos que los pines son de salida
  pinMode(Y_DIR_PIN ,OUTPUT);
  pinMode(Y_ENABLE_PIN ,OUTPUT);
  pinMode(Y_MIN_PIN ,INPUT_PULLUP);

  pinMode(Z_STEP_PIN ,OUTPUT); //Indicamos que los pines son de salida
  pinMode(Z_DIR_PIN ,OUTPUT);
  pinMode(Z_ENABLE_PIN ,OUTPUT);
  pinMode(Z_MIN_PIN ,INPUT_PULLUP);

  pinMode(E_STEP_PIN ,OUTPUT); //Indicamos que los pines son de salida
  pinMode(E_DIR_PIN ,OUTPUT);
  pinMode(E_ENABLE_PIN ,OUTPUT);

  pinMode(E_1_STEP_PIN ,OUTPUT); //Indicamos que los pines son de salida
  pinMode(E_1_DIR_PIN ,OUTPUT);
  pinMode(E_1_ENABLE_PIN ,OUTPUT);

  Serial.begin(115200);
 
}

void loop(){


  digitalWrite(X_DIR_PIN,HIGH); //Fijamos una direción

  for(int X=0;X<600;X++){ //Mandamos pulsos al motor en concreto 2000
    digitalWrite(X_STEP_PIN,HIGH);
    delay(1);
    digitalWrite(X_STEP_PIN,LOW);
    delay(1);
  }

  digitalWrite(Y_DIR_PIN,HIGH); //Fijamos una direccion

  for(int Y=0;Y<2000;Y++){ //Mandamos pulsos al motor en concreto 2000
    digitalWrite(Y_STEP_PIN,HIGH);
    digitalWrite(Y_STEP_PIN,LOW);
  }

  digitalWrite(Z_DIR_PIN,HIGH); //Fijamos una direccion

  for(int Z=0;Z<500;Z++){ //Mandamos pulsos al motor en concreto 500
    digitalWrite(Z_STEP_PIN,HIGH);
    digitalWrite(Z_STEP_PIN,LOW);
  }

  digitalWrite(Z_DIR_PIN,LOW); //Cambiamos la direccion de giro

  for(int Z=0;Z<200;Z++){ //Hacemos 200 pasos en sentido contrario
    digitalWrite(Z_STEP_PIN,HIGH);
    digitalWrite(Z_STEP_PIN,LOW);
  }

  digitalWrite(E_DIR_PIN,HIGH); //Fijamos una direccion

  for(int E=0;E<800;E++){ //Mandamos pulsos al motor en concreto 800
    digitalWrite(E_STEP_PIN,HIGH);
    digitalWrite(E_STEP_PIN,LOW);
  }

  digitalWrite(E_DIR_PIN,LOW); //Cambiamos la direccion de giro

  for(int E=0;E<400;E++){ //Hacemos 400 pasos en sentido contrario
    digitalWrite(E_STEP_PIN,HIGH);
    digitalWrite(E_STEP_PIN,LOW);
  }

  digitalWrite(Y_DIR_PIN,HIGH); //Fijamos una direccion

  for(int Y=0;Y<200;Y++){ //Mandamos pulsos al motor en concreto 200
    digitalWrite(Y_STEP_PIN,HIGH);
    digitalWrite(Y_STEP_PIN,LOW);
  }

  digitalWrite(E_1_DIR_PIN,HIGH); //Fijamos una direción

  for(int E_1=0;E_1<400;E_1++){ //Mandamos pulsos al motor en concreto 400
    digitalWrite(E_1_STEP_PIN,HIGH);
    digitalWrite(E_1_STEP_PIN,LOW);
  }

}
Citar
#2
Hola y bienvenido al foro tolimenso, sería estupendo que al menos te presentaras en el apartado del foro para ello https://www.spainlabs.com/foros/foro-Evo...-SpainLabs y nos contaras algo de ti antes de una vez bombardear con preguntas para que te hagamos las tareas. No te lo tomes a mal, es cuestión de educación.

Saludos!
"Enseñar es aprender dos veces".
Citar
#3
Hola, mil disculpas, andaba un poco afanado, ya realice mi presentación en el foro y gracias por el llamado de atención.
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  DUDA Ayuda con programa Girarrelojes con motor paso a paso 28BYJ-48 y ULN2003 Alvaro Braca 7 409 30-10-2018, 06:25 AM
Último mensaje: edu_v
  CONSULTA Re: Arduino Mega, 1 servo ,1 nema, 3 motor DC carlos hop 8 398 26-09-2018, 01:30 PM
Último mensaje: Shellmer
  conversión código arduino ethernet 5100 a wemos d1 mini nbaglietto 0 370 24-11-2017, 02:05 AM
Último mensaje: nbaglietto
  Problemas subiendo codigo al ESP8266 igargi 6 4,911 18-09-2017, 04:04 AM
Último mensaje: CarlosTM
  Codigo morse con arduino antonio_gt_9.2 0 1,216 08-12-2016, 08:06 PM
Último mensaje: antonio_gt_9.2