Este es el SETUP.
void setup () {
   lcd.begin(); //Crea e inicializa el LCD
   lcd.noCursor();
   Presentacion_lcd(); //aca hace una pequeña presentacion grafica.
   pinMode(13, OUTPUT); //es el led de encendido
   pinMode(sensorX, INPUT); //el boton de fin de carrera del ejeX
   pinMode(sensorY,INPUT); //el boton de fin de carrera del ejeY
   pinMode(sensorZ,INPUT); //el boton de fin de carrera del ejeZ
   Serial.begin(9600); //inicio el puerto serial y le pongo la velocidad de comunicacion
   Eje_X.setSpeed(200); //
   Eje_Y.setSpeed(200); // seteo la velocidad del motor a 90 revoluciones por minuto
   Eje_Z.setSpeed(250); //
   Inicializar_posiciones();
   Modo_manual();
}
   lcd.begin(); //Crea e inicializa el LCD
   lcd.noCursor();
   Presentacion_lcd(); //aca hace una pequeña presentacion grafica.
   pinMode(13, OUTPUT); //es el led de encendido
   pinMode(sensorX, INPUT); //el boton de fin de carrera del ejeX
   pinMode(sensorY,INPUT); //el boton de fin de carrera del ejeY
   pinMode(sensorZ,INPUT); //el boton de fin de carrera del ejeZ
   Serial.begin(9600); //inicio el puerto serial y le pongo la velocidad de comunicacion
   Eje_X.setSpeed(200); //
   Eje_Y.setSpeed(200); // seteo la velocidad del motor a 90 revoluciones por minuto
   Eje_Z.setSpeed(250); //
   Inicializar_posiciones();
   Modo_manual();
}
Aca esta la presentacion que se realiza en el LCD que es de 2 filas.
void Presentacion_lcd(){
   lcd.cursorTo(1,0); //fila 1 columna 0
   lcd.print(" Borrajo ");
   lcd.cursorTo(2,0); //fila 2 columna 0
   lcd.print("CNC V 2.0.1");
   delay(5000); //espera 5 segundos y borra el lcd.
   lcd.clear();
}
   lcd.cursorTo(1,0); //fila 1 columna 0
   lcd.print(" Borrajo ");
   lcd.cursorTo(2,0); //fila 2 columna 0
   lcd.print("CNC V 2.0.1");
   delay(5000); //espera 5 segundos y borra el lcd.
   lcd.clear();
}
El siguiente proceso mueve los motores hasta llegar a los sensores de final de carrera, de esta manera nos aseguramos que siempre este en (0,0)
void Inicializar_posiciones(){
   lcd.print("Inicializando...");
   iniciar(Eje_X,sensorX,posx);
   iniciar(Eje_Y,sensorY,posy);
   lcd.clear();
   lcd.print(" Preparada");
}
void iniciar(Stepper motor,int sensor,long pos){
  while ( digitalRead(sensor) != HIGH ){ // mientras el sensor este en off el motor se sigue moviendo
    motor.step(-1);
    delay(10);
}
pos = 0;
}
   lcd.print("Inicializando...");
   iniciar(Eje_X,sensorX,posx);
   iniciar(Eje_Y,sensorY,posy);
   lcd.clear();
   lcd.print(" Preparada");
}
void iniciar(Stepper motor,int sensor,long pos){
  while ( digitalRead(sensor) != HIGH ){ // mientras el sensor este en off el motor se sigue moviendo
    motor.step(-1);
    delay(10);
}
pos = 0;
}
Y solo esto es el proceso Loop :
void loop(){
  byte DatoLeido[11]; //es un vector de 11 posiciones de byte ( caracteres en codigo ascii)
  Serial.write('1'); //mandamos un dato para avisar qeu estamos listos
  if (Serial.available() > 0){ //esperar que haya datos en el puerto serial
    leer_dato(DatoLeido);
    Ejecutar (DatoLeido);
}
delay(200);
}
  byte DatoLeido[11]; //es un vector de 11 posiciones de byte ( caracteres en codigo ascii)
  Serial.write('1'); //mandamos un dato para avisar qeu estamos listos
  if (Serial.available() > 0){ //esperar que haya datos en el puerto serial
    leer_dato(DatoLeido);
    Ejecutar (DatoLeido);
}
delay(200);
}
Si bien todavia no explique el teclado y el display, les dejo para que se bajen los archivos del cnc.
en otra ocasion, hago un especial para explicar como funciona el teclado y como lo hice.
Descarga el Archivo para tu CNC. Arduino
Descarga el Software para la PC, es en Processing.
Espero que les sirva, y cualquier duda, ya sabe, pregunten!!
hasta la proxima!
Borrajo.
No hay comentarios:
Publicar un comentario