Diagrama de flujo simple (proyecto motor paso a paso)

Buenas soy nuevo y estoy en apuros con un proyecto que debo entregar, se trata de controlar un motor paso a paso NEMA 23 con arduino, este esta controlado mediante un potenciometro y 4 botones, los que le entregan informacion al driver del motor TB6600, este codigo lo e sacado de internet esta en portuges pero es simple al traducir.

Entonces lo que necesito es si alguien supiera o me guiara para hacer un diagrama de flujo de este codigo porfavor.

#define sentido_antihorario digitalWrite(5, LOW);  // define comando para sentido anti-horário
#define habilita_motor digitalWrite(7, LOW);       // define comando para habilitar motor
#define inibe_motor digitalWrite(7, HIGH);   // define comando para desligar motor
 
int velocidade = 0;     // Variável que informa a velocidade do motor
                        // 0 = motor parado e 1024 = velocidade máxima;
                        
int habilita = 0;       //Variável que guarda o resultado dos comando dos botões de liga e desliga
                        // Se 0 = Para Motor // Se 1 = Roda o Motor
 
int sentido = 1;        // Variável que informa o sentido de giro do motor
                        // se 1 = Sentido Horário // Se 2 = Sentido anti-horário
 
int modo_de_operacao = 0;  // Variável que guarda a combinação dos botões para o programa saber o que fazer
                           // Essa variável pode ter 3 valores
                           // 0 -> desliga motor
                           // 1 -> Liga o Motor no Sentido Horário
                           // 2 -> Liga o Motor no sentido Anti-horário
void setup() 
{
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);       // Configura pinos 5, 6 e 7 como saídas digitais
  pinMode(7,OUTPUT);
}
 
void loop() 
{
    if (digitalRead( 8 )==1)    // Verifica se o botão liga (primeiro botão) foi pressionado
    habilita = 1;             // Se sim altera a variável habilita para 1 = Liga motor
    
    if( digitalRead(9) == 1)  // Verifica se o botão desliga (segundo botão) foi pressionado
    habilita = 0;             // Se sim altera a variável habilita para 0 = Desliga motor
    
    if (digitalRead(10)==1)  // Verifica se o botão Horário (terceiro botão) foi pressionado   
    sentido = 1;             // Se sim altera a variável sentido para 1 = Sentido Horário
    
    if( digitalRead(11) == 1) // Verifica se o botão anti-Horário (quarto botão) foi pressionado 
    sentido = 2;              // Se sim altera a variável sentido para 2 = Sentido anti-horário 
 
     modo_de_operacao = sentido * habilita;  // Neste ponto cruzamos as informações das chaves
                                             // e geramos 3 possíveis combinações:
                                             // 2 x 1 = 2 \
                                             // 1 x 1 = 1  \ Os resultados podem ser
                                             // 1 x 0 = 0  / 0,  ou 2
                                             // 2 x 0 = 0 /
     
    switch (modo_de_operacao)       //Verifica o valor da variável modo_de_operacao          
   {
     case 0:                    // Se for 0
     inibe_motor                // Para o motor
     digitalWrite(6, LOW);      // Para de enviar pulsos para o Driver
     break;
     
     case 1:                       // Se for 1
     habilita_motor                // Liga o motor
     sentido_horario                // Liga o sentido horário
     velocidade = analogRead(A0);   // Lê o valor do potenciômetro
     tone(6, velocidade);         // Envia o valor do potenciômetro em forma de frequencia para o driver
     break;
     
     case 2:                      // Se for 2
     habilita_motor              // Liga o motor
     sentido_antihorario           // Liga o sentido anti-horário
     velocidade = analogRead(A0);    // Lê o valor do potenciômetro
     tone(6, velocidade);      // Envia o valor do potenciômetro em forma de frequencia para o driver
     break;
   }
     
}

adjunto link de proyecto

http://blog.baudaeletronica.com.br/driver-tb6600-com-arduino/

Buenas,

Con lo de diagrama de flujo, intuyo que se refiere a un diagrama de bloques en el que cada bloque es un estado de funcionamiento del motor y cómo se pasa de un estado al otro en función de las entradas (en este caso pulsar botones).

Sólo tienes 3 bloques de estado: motor parado, motor girando a derechas y motor girando a izquierdas. Cada botón representaría la línea de transición de un bloque a otro.

Este código sólo te vale para el motor girando en vacío o con una carga muy pequeña, ya que no tiene rampas de aceleración o deceleración, lo cual haría que pierda pasos si tuviera que mover algún objeto. No obstante, como aquí tampoco se está llevando la cuenta de los pasos (para tener controlada la posición) no creo que sea relevante que el motor pierda pasos.

saludos

e-Duardo:
Buenas,

Con lo de diagrama de flujo, intuyo que se refiere a un diagrama de bloques en el que cada bloque es un estado de funcionamiento del motor y cómo se pasa de un estado al otro en función de las entradas (en este caso pulsar botones).

Sólo tienes 3 bloques de estado: motor parado, motor girando a derechas y motor girando a izquierdas. Cada botón representaría la línea de transición de un bloque a otro.

Este código sólo te vale para el motor girando en vacío o con una carga muy pequeña, ya que no tiene rampas de aceleración o deceleración, lo cual haría que pierda pasos si tuviera que mover algún objeto. No obstante, como aquí tampoco se está llevando la cuenta de los pasos (para tener controlada la posición) no creo que sea relevante que el motor pierda pasos.

saludos

hola muchas gracias por la respuesta y si es mejor definirlo como diagrama de bloques. ¿Como se le podria agregar al codigo rampas de aceleracion o deceleracion?, ya que efectivamente se usara con carga.

Yo también estoy empezando en ésto y no soy la persona que pueda ayudarte. También estoy interesado en el tema, y precisamente hay un hilo sobre el uso de la biblitoteca AccelStepper que debe ser apropiada para estas cosas.
He lanzado la pregunta para ver si alguien puede decir si se puede usar con drivers que se accionan mediante las entradas clock/direction (del estilo del que tú estás usando).

Saludos