Go Down

Topic: Control con mouse (Read 460 times) previous topic - next topic

terradoira

Hola, me gustaría que alguien me ayudara en el diseño de un software para el control de dos  TB6600 con un mouse de Pc
Muchas gracias

surbyte

Moderador:Hola, bienvenido al foro Arduino.
En la sección proyectos tienes estos dos hilos que debiste haber leído antes de postear




Como tu consulta es para otra sección lo muevo a Software.
Normas del foro

surbyte

Intenta mejorar la descripción de tu problema. Qué es un TB6600? Coloca un link que ayude a entender.
Qué quieres hacer?

terradoira

#3
Jul 06, 2020, 11:01 am Last Edit: Jul 07, 2020, 08:57 am by terradoira
Perdón por la descripción, mi problema es controlar dos motores paso a paso bipolares a través de dos controladores tb6600

Estos utilizan dos pines para el control uno para la dirección y otro para el pulso.
Todo esto es para una mesa de microscopio controlada a través de un ratón de Pc directamente.

surbyte

Moderador:
Ya te he pedido que leas las normas y aún asi sigues posteando indebidamente.
Lee las normas del foro y edita tu enlace por favor


Ese controlador es muy fácil de manejar. El tema es que creo que tu tienes poca idea de como usar Arduino asi que te recomiendo vayas a Documentación => indice de Temas Tutoriales => libros y te introduzcas en como se hacen las cosas con arduino.

Necesitas controlar la dirección pues un pin definido como salida en LOW o HIGH resuelve ese problema
Lo otro es indicarle cuantos pulsos moverse pero de nuevo, este controlador es tan simple que solo generas pulsos HIGH/LOW tantos como los pasos que quieras darle y ya esta.
Un ejemplo de esto es BLINK.ino que hace parpadear un led a 500 o 1000 mseg por vez. En tu caso creo que no debes bajar de 100mseg Aunque no me gusta podrias usar delay(100) a sabiendas que eso detiene al microcontrolador o sea deja de prestar atención al resto de las cosas.

un ciclo en el que le indiques los pasos resuelve el problema

Code: [Select]
for (int i=0; i<pasos; i++) {
      digitalWrite(pinSalida, HIGH);
      delay(100); // aumentar si no es suficiente
      digitalWrite(pinSalida, LOW); 
}


y este ciclo en una rutina lo hace fácil de usar por ejemplo

Code: [Select]

void moverPasos(int pasos) {
   for (int i=0; i<pasos; i++) {
      digitalWrite(pinSalida, HIGH);
      delay(100); // aumentar si no es suficiente
      digitalWrite(pinSalida, LOW); 
   }
}


en tu loop solo diciendo

Code: [Select]
void loop() {
     // indico la dirección
     digitalWrite(dirPin, HIGH); // High hará algo y LOW hará lo opuesto
     moverPasos(200);
}

Go Up