Created
May 30, 2019 18:27
-
-
Save Naylamp-Mechatronics/eb8934a38baad727a892eace5064a43c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* FILE: nanoCNCshieldTest.ino | |
DATE: 30/05/19 | |
VERSION: 0.2 | |
AUTHOR: Naylamp Mechatronics | |
Basado en el ejemplo HC_CNC_Shield_Test por Andrew Davies de HobbyComponents.com | |
Este ejemplo prueba la funcionalidad básica del shield CNC para Arduino Nano | |
Este scketch moverá los ejes X, Y, Z en ambas direcciones. También reportará | |
via puerto serial si algún final de carrera fue activado. | |
*/ | |
#define EN 8 /* Enable pin para todos los drivers */ | |
#define X_DIR 2 /* Pin de dirección para el eje X */ | |
#define X_STEP 5 /* Pin de pasos para el eje X */ | |
#define Y_DIR 3 /* Pin de dirección para el eje Y */ | |
#define Y_STEP 6 /* Pin de pasos para el eje Y */ | |
#define Z_DIR 4 /* Pin de dirección para el eje Z */ | |
#define Z_STEP 7 /* Pin de pasos para el eje Z */ | |
#define X_ENDSTOP 9 /* Pin de entrada para final de carrera en el eje X */ | |
#define Y_ENDSTOP 10 /* Pin de entrada para final de carrera en el eje Y */ | |
#define Z_ENDSTOP 11 /* Pin de entrada para final de carrera en el eje Z */ | |
#define ABORT A0 /* Pin de entrada para abortar */ | |
#define HOLD A1 /* Pin de entrada para Hold */ | |
#define RESUME A2 /* Pin de entrada para Resume */ | |
int Count = 0; /* Contador de pasos realizados */ | |
boolean Direction = LOW; /* Dirección rotacional de los motores */ | |
/* The setup routine runs once when you press reset: */ | |
void setup() | |
{ | |
/* Initialize serial */ | |
Serial.begin(9600); | |
/* Configure the steper drive pins as outputs */ | |
pinMode(EN, OUTPUT); | |
pinMode(X_DIR, OUTPUT); | |
pinMode(X_STEP, OUTPUT); | |
pinMode(Y_DIR, OUTPUT); | |
pinMode(Y_STEP, OUTPUT); | |
pinMode(Z_DIR, OUTPUT); | |
pinMode(Z_STEP, OUTPUT); | |
/* Configure the control pins as inputs with pullups */ | |
pinMode(X_ENDSTOP, INPUT_PULLUP); | |
pinMode(Y_ENDSTOP, INPUT_PULLUP); | |
pinMode(Z_ENDSTOP, INPUT_PULLUP); | |
pinMode(ABORT, INPUT_PULLUP); | |
pinMode(HOLD, INPUT_PULLUP); | |
pinMode(RESUME, INPUT_PULLUP); | |
/* Activa los drivers de todos los motores */ | |
digitalWrite(EN, LOW); //Se activa con LOW | |
} | |
void loop() | |
{ | |
/* Cuenta un paso */ | |
Count++; | |
/* Una vez que se realiza 5000 pasos se cambia la dirección de giro */ | |
if (Count >= 5000) | |
{ | |
Direction = !Direction; | |
digitalWrite(X_DIR, Direction); // Low = sentido horario | |
digitalWrite(Y_DIR, Direction); // Low = sentido horario | |
digitalWrite(Z_DIR, Direction); // Low = sentido horario | |
Count = 0; | |
} | |
/* Hacer girar los motores X, Y, Z */ | |
digitalWrite(X_STEP, HIGH); | |
delay(1); | |
digitalWrite(Y_STEP, HIGH); | |
delay(1); | |
digitalWrite(Z_STEP, HIGH); | |
delay(1); | |
digitalWrite(X_STEP, LOW); | |
delay(1); | |
digitalWrite(Y_STEP, LOW); | |
delay(1); | |
digitalWrite(Z_STEP, LOW); | |
delay(1); | |
/* Revisa el estado de las entradas */ | |
if (!digitalRead(X_ENDSTOP)) Serial.println("X-axis end-stop activado!"); | |
if (!digitalRead(Y_ENDSTOP)) Serial.println("Y-axis end-stop activado!"); | |
if (!digitalRead(Z_ENDSTOP)) Serial.println("Z-axis end-stop activado!"); | |
if (!digitalRead(ABORT)) Serial.println("Abort input activado!"); | |
if (!digitalRead(HOLD)) Serial.println("Hold input activado!"); | |
if (!digitalRead(RESUME)) Serial.println("Resume input activado!"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment