Ordenar código.

Todo cuanto tiene que ver con la obtención, almacenamiento y proceso de la información digital, sus aplicaciones y el software y hardware utilizado.
Responder
Mensaje
Autor
Avatar de Usuario
Luis
Mensajes: 1304
Registrado: Mar Ene 03, 2006 10:12 pm
País: España
Ciudad: Por el valle del Tietar

Ordenar código.

#1 Mensaje por Luis »

Hola alguien me puede ordenar correctamente este código?. No me aclaro donde empieza cada linea, ni donde termina. La he encontrado así y parece traducida del portugués. Es para mover un solo eje lineal.
Paso 15: Código fuente

Inclusión de bibliotecas y creación de objetos.

Tenemos aquí una Lib que hice, que es StepDriver.h. Está preparado para el 8825, 4988 y también para los controladores TB6600. Creo en este paso el objeto DRV8825, el d1.

// Biblioteca responsable de capturar una tecla que está presionada en el teclado
#incluir // Biblioteca responsavel pelos graficos do display #include // Biblioteca responsável pela comunicacao do display #include // Configuracao de pinos do Display // pin 6 - Serial out out (SCLK) // pin 5 - Serial data out (DIN) / / pin 4 - Data / Command select (D / C) // pin 3 - LCD chip select (CS / CE) // pin 2 - LCD reset (RST) Adafruit_PCD8544 display = Adafruit_PCD8544 (6, 5, 4, 3, 2, ); // Biblioteca de motor de passo #include // Instancia o driver DRV8825 DRV8825 d1;

Constantes y variables globales

En esta parte del código, trato la matriz, que enseñé en otra lección en video (LINK KEYBOARD). Aún así, estoy hablando del objeto Teclado, además de la distancia y la velocidad.

const byte LINHAS = 4; // número de linhas do teclado
constunte COLUNAS = 4; // número de colunas do teclado // define uma matriz con los símbolos que deseja ser lido do teclado char SIMBOLOS LINHAS COLUNAS = {{'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '}}; byte PINOS_LINHA LINHAS = {A2, A3, A4, A5}; // pinos que indican como linhas do teclado byte PINOS_COLUNA COLUNAS = {0, 1, A0, A1}; // Pinos que indican las colunas en el teclado // instancia de Teclado, respuesta para capturar una tecla pulsada Teclado customKeypad = Teclado (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // variáveis ​​resposnsáveis ​​por armazenar o valor digitado char customKey; distancia larga sin signo = 0; velocidad larga sin signo = 2000;

Función de lectura del teclado

En este paso tenemos el código que se refiere a la pantalla, que funciona aumentando y disminuyendo la impresión.

// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- ---
sin signo long lerValor () {// Escreve o submenu que coleta os valores no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (BLANCO); display.print ("VALOR"); display.setTextColor (BLACK); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (BLANCO); display.print ("CLR"); display.setTextColor (BLACK); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (BLANCO); display.print ("F4"); display.setTextColor (BLACK); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); display.display (); Valor de la cuerda = ""; char tecla = falso;

bucle esperando la tecla presionada

Aquí explicamos la programación de Loop, es decir, donde ingresas los valores.

// Loop infinito enquanto nao chamar o retorno
while (1) {tecla = customKeypad.getKey (); if (tecla) {switch (tecla) {// Las teclas de 0 a 9 forem pressionadas case '1': case '2': case '3': case '4': case '5': case '6': caso '7': caso '8': caso '9': caso '0': valor + = tecla; display.print (tecla); display.display (); descanso; // Se tecla CLR foi pressionada case 'c': // Limpa a string valor valor = ""; // Apaga o valor do display display.fillRect (2, 14, 84, 8, 0); display.setCursor (2, 14); display.display (); descanso; // Se tecla ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); descanso; // Se tecla F4 (ESC) para caso de pressionada 'D': retorno -1; por defecto: romper }} // Limpa o char tecla tecla = falso; }}

Función de accionamiento del motor

La función "mover" se trabaja en este paso. Obtengo el número de pulsos y la dirección y luego hago un "para".

// Funcao responsavel por mover o motor --------------------------------------
motor de vacío (pulsos largos sin firmar, bool direcao) {para (largos sin signo i = 0; i <pulsos; i ++) {d1.motorMove (direcao); }}

preparar ()

Ahora muevo la pantalla y la configuración del controlador, e incluso coloco la fijación dentro del código fuente para que sea más fácil. Inicializo ciertos valores y trato con los métodos que generan las configuraciones.

configuración vacía () {
// Configuracao no muestra --------------------------------------------- --- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (BLACK); // Configuração do Driver DRV8825 ----------------------------------------- // pin GND - Habilitar (ENA) // pin 13 - M0 // pin 12 - M1 // pin 11 - M2 // pin 10 - Restablecer (RST) // pin 9 - Suspensión (SLP) // pin 8 - Paso (STP) ) // pin 7 - Dirección (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.sueño (BAJO); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

loop () - 1ª parte - Menú de dibujo

bucle de vacío () {
// Escreve o Menu do Programa no display ----------------------------------- display.clearDisplay (); display.fillRect (0, 0, 15, 11, 2); display.setCursor (2, 2); display.setTextColor (BLANCO); display.print ("F1"); display.setTextColor (BLACK); display.setCursor (17, 2); display.print ("CRESCENTE"); display.fillRect (0, 12, 15, 11, 2); display.setCursor (2, 14); display.setTextColor (BLANCO); display.print ("F2"); display.setTextColor (BLACK); display.setCursor (17, 14); display.print ("DECRESCENTE"); display.fillRect (0, 24, 15, 11, 2); display.setCursor (2, 26); display.setTextColor (BLANCO); display.print ("F3"); display.setTextColor (BLACK); display.setCursor (17, 26); display.print ("VELOCIDADE");

loop () - Parte 2 - Menú de dibujo

display.fillRect (0, 36, 15, 11, 2);
display.setCursor (2, 38); display.setTextColor (BLANCO); display.print ("F4"); display.setTextColor (BLACK); display.setCursor (17, 38); display.print ("ESC"); display.display (); bool esc = falso;

loop () - Parte 3 - Corriendo

// Loop enquanto a tecla F4 (ESC) nao para pressionada
while (! esc) {// captura una tecla presionada en el teclado customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada if (customKey) {// Trata a tecla apertada switch (customKey) {// Se tecla F1 foi pressionada caso 'A': distancia = lerValor (); // Se pulsa ESC foi pressionada if (distancia == -1) {esc = true; } else {// Escreve una tela "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BLANCO); display.print ("MOVENDO"); display.setTextColor (BLACK); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); display.display ();

loop () - Parte 4 - Corriendo

// mover o motor
mover (distancia, BAJA); // Volta ao menu esc = true; } rotura; // Se tecla F2 foi pressionada caso 'B': distancia = lerValor (); // Se pulsa ESC foi pressionada if (distancia == -1) {esc = true; } else {// Escreve una tela "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BLANCO); display.print ("MOVENDO"); display.setTextColor (BLACK); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); display.display ();

loop () - Parte 5 - Corriendo

// mover o motor
mover (distancia, ALTO); // Volta ao menu esc = true; } rotura; // Se tecla F3 para el caso pressionada 'C': velocidade = lerValor (); if (velocidade == -1) {esc = true; } else {// Escreve una tela "Velocidade" sin mostrar display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (BLANCO); display.print ("VELOCIDADE"); display.setTextColor (BLACK); display.setCursor (2, 14); display.print (velocidade); display.print (char (229)); display.print ("s");

loop () - Parte 6 - Corriendo

display.fillRect (31, 24, 21, 11, 2);
display.setCursor (33, 26); display.setTextColor (BLANCO); display.println ("OK!"); display.setTextColor (BLACK); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); retraso (2000); // Volta ao menu esc = true; } rotura; // Se tecla F4 (ESC) caso de pressionada 'D': // Se tecla CLR para caso de pressionada 'c': // Se tecla ENT foi pressionada caso 'e': // Volta ao menu esc = true; por defecto: romper }} // Limpa o char customKey customKey = false; }}


Viene de aquí:https://es.howtodogood.com/63501-Arduin ... h-Motor-62
Gracias
Luis

jordi3sk97
Mensajes: 120
Registrado: Mar Jun 29, 2010 10:53 pm
País: España
Ciudad: Barcelona

Re: Ordenar código.

#2 Mensaje por jordi3sk97 »

Más o menos así. falta pulirlo bastante
Pero ya te digo que esto no compilará.
================================

// Biblioteca responsable de capturar una tecla que está presionada en el teclado #incluir
// Biblioteca responsavel pelos graficos do display
#include
// Biblioteca responsável pela comunicacao do display
#include
// Configuracao de pinos do Display
// pin 6 - Serial out out (SCLK)
// pin 5 - Serial data out (DIN)
// pin 4 - Data / Command select (D / C)
// pin 3 - LCD chip select (CS / CE)
// pin 2 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544 (6, 5, 4, 3, 2, );
// Biblioteca de motor de passo #include
// Instancia o driver DRV8825
DRV8825 d1;

Constantes y variables globales

//En esta parte del código, trato la matriz, que enseñé en otra lección en video (LINK KEYBOARD). Aún así, estoy hablando del objeto Teclado, además de la distancia y la velocidad.

const byte LINHAS = 4; // número de linhas do teclado
constunte COLUNAS = 4; // número de colunas do teclado
// define uma matriz con los símbolos que deseja ser lido do teclado
char SIMBOLOS LINHAS COLUNAS = {{'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '}};
byte PINOS_LINHA LINHAS = {A2, A3, A4, A5};
// pinos que indican como linhas do teclado
byte PINOS_COLUNA COLUNAS = {0, 1, A0, A1};
// Pinos que indican las colunas en el teclado
// instancia de Teclado, respuesta para capturar una tecla pulsada Teclado
customKeypad = Teclado (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS);
// variáveis ​​resposnsáveis ​​por armazenar o valor digitado
char customKey;
distancia larga sin signo = 0;
velocidad larga sin signo = 2000;

Función de lectura del teclado

En este paso tenemos el código que se refiere a la pantalla, que funciona aumentando y disminuyendo la impresión.

// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- ---
sin signo long lerValor ()
{
// Escreve o submenu que coleta os valores no display
display.clearDisplay ();
display.fillRect (0, 0, 84, 11, 2);
display.setCursor (27, 2);
display.setTextColor (BLANCO);
display.print ("VALOR");
display.setTextColor (BLACK);
display.fillRect (0, 24, 21, 11, 2);
display.setCursor (2, 26);
display.setTextColor (BLANCO);
display.print ("CLR");
display.setTextColor (BLACK);
display.setCursor (23, 26);
display.print ("LIMPAR");
display.fillRect (0, 36, 21, 11, 2);
display.setCursor (5, 38);
display.setTextColor (BLANCO);
display.print ("F4");
display.setTextColor (BLACK);
display.setCursor (23, 38);
display.print ("VOLTAR");
display.setCursor (2, 14);
display.display ();
Valor de la cuerda = "";
char tecla = falso;

//bucle esperando la tecla presionada

//Aquí explicamos la programación de Loop, es decir, donde ingresas los valores.

// Loop infinito enquanto nao chamar o retorno
while (1)
{
tecla = customKeypad.getKey ();
if (tecla) {switch (tecla) {
// Las teclas de 0 a 9 forem pressionadas case '1': case '2': case '3': case '4': case '5': case '6': caso '7': caso '8': caso '9': caso '0':
valor + = tecla;
display.print (tecla);
display.display ();
descanso;
// Se tecla CLR foi pressionada case 'c':
// Limpa a string valor valor = "";
// Apaga o valor do display
display.fillRect (2, 14, 84, 8, 0);
display.setCursor (2, 14);
display.display ();
descanso;
// Se tecla ENT foi pressionada case 'e':
// Retorna o valor
return valor.toInt ();
descanso;
// Se tecla F4 (ESC) para caso de pressionada 'D': retorno -1;
por defecto: romper }}
// Limpa o char tecla tecla = falso; }}

Función de accionamiento del motor

La función "mover" se trabaja en este paso. Obtengo el número de pulsos y la dirección y luego hago un "para".

// Funcao responsavel por mover o motor --------------------------------------
motor de vacío (pulsos largos sin firmar, bool direcao)
{para (largos sin signo i = 0; i <pulsos; i ++)
{d1.motorMove (direcao); }}

preparar ()

Ahora muevo la pantalla y la configuración del controlador, e incluso coloco la fijación dentro del código fuente para que sea más fácil. Inicializo ciertos valores y trato con los métodos que generan las configuraciones.

configuración vacía ()
{
// Configuracao no muestra --------------------------------------------- ---
display.begin ();
display.setContrast (50);
display.clearDisplay ();
display.setTextSize (1);
display.setTextColor (BLACK);
// Configuração do Driver DRV8825 -----------------------------------------
// pin GND - Habilitar (ENA)
// pin 13 - M0
// pin 12 - M1
// pin 11 - M2
// pin 10 - Restablecer (RST)
// pin 9 - Suspensión (SLP)
// pin 8 - Paso (STP) )
// pin 7 - Dirección (DIR)
d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7);
d1.sueño (BAJO); d1.reset ();
d1.stepPerMm (100);
d1.stepPerRound (200);
d1.stepConfig (1);
d1.motionConfig (50, velocidade, 5000);
}

loop () - 1ª parte - Menú de dibujo

bucle de vacío () {
// Escreve o Menu do Programa no display -----------------------------------
display.clearDisplay ();
display.fillRect (0, 0, 15, 11, 2);
display.setCursor (2, 2);
display.setTextColor (BLANCO);
display.print ("F1");
display.setTextColor (BLACK);
display.setCursor (17, 2);
display.print ("CRESCENTE");
display.fillRect (0, 12, 15, 11, 2);
display.setCursor (2, 14);
display.setTextColor (BLANCO);
display.print ("F2");
display.setTextColor (BLACK);
display.setCursor (17, 14);
display.print ("DECRESCENTE");
display.fillRect (0, 24, 15, 11, 2);
display.setCursor (2, 26);
display.setTextColor (BLANCO);
display.print ("F3");
display.setTextColor (BLACK);
display.setCursor (17, 26);
display.print ("VELOCIDADE");

loop () - Parte 2 - Menú de dibujo

display.fillRect (0, 36, 15, 11, 2);
display.setCursor (2, 38);
display.setTextColor (BLANCO);
display.print ("F4");
display.setTextColor (BLACK);
display.setCursor (17, 38);
display.print ("ESC");
display.display ();
bool esc = falso;

loop () - Parte 3 - Corriendo

// Loop enquanto a tecla F4 (ESC) nao para pressionada
while (! esc)
{
// captura una tecla presionada en el teclado
customKey = customKeypad.getKey ();
// caso alguma tecla foi pressionada
if (customKey)
{
// Trata a tecla apertada
switch (customKey)
{
// Se tecla F1 foi pressionada caso 'A':
distancia = lerValor ();
// Se pulsa ESC foi pressionada
if (distancia == -1)
{esc = true; }
else
{
// Escreve una tela "Movendo" no display
display.clearDisplay ();
display.fillRect (0, 0, 84, 11, 2);
display.setCursor (21, 2);
display.setTextColor (BLANCO);
display.print ("MOVENDO");
display.setTextColor (BLACK);
display.setCursor (2, 14);
display.print (distancia);
display.print ("Passos");
display.display ();

loop () - Parte 4 - Corriendo

// mover o motor
mover (distancia, BAJA);
// Volta ao menu esc = true;
} rotura;
// Se tecla F2 foi pressionada caso 'B':
distancia = lerValor ();
// Se pulsa ESC foi pressionada
if (distancia == -1)
{esc = true; }
else {
// Escreve una tela "Movendo" no display
display.clearDisplay ();
display.fillRect (0, 0, 84, 11, 2);
display.setCursor (21, 2);
display.setTextColor (BLANCO);
display.print ("MOVENDO");
display.setTextColor (BLACK);
display.setCursor (2, 14);
display.print (distancia);
display.print ("Passos");
display.display ();

loop () - Parte 5 - Corriendo

// mover o motor
mover (distancia, ALTO);
// Volta ao menu esc = true;
}
rotura;
// Se tecla F3 para el caso pressionada 'C':
velocidade = lerValor ();
if (velocidade == -1)
{esc = true; }
else
{
// Escreve una tela "Velocidade" sin mostrar
display.clearDisplay ();
display.fillRect (0, 0, 84, 11, 2);
display.setCursor (12, 2);
display.setTextColor (BLANCO);
display.print ("VELOCIDADE");
display.setTextColor (BLACK);
display.setCursor (2, 14);
display.print (velocidade);
display.print (char (229));
display.print ("s");

loop () - Parte 6 - Corriendo

display.fillRect (31, 24, 21, 11, 2);
display.setCursor (33, 26);
display.setTextColor (BLANCO);
display.println ("OK!");
display.setTextColor (BLACK);
display.display ();
// Configura nova velocidade ao motor
d1.motionConfig (50, velocidade, 5000);
retraso (2000);
// Volta ao menu
esc = true;
}
rotura;
// Se tecla F4 (ESC) caso de pressionada 'D':
// Se tecla CLR para caso de pressionada 'c':
// Se tecla ENT foi pressionada caso 'e':
// Volta ao menu
esc = true;
por defecto: romper
}
}
// Limpa o char customKey customKey = false;
}
}

Avatar de Usuario
Luis
Mensajes: 1304
Registrado: Mar Ene 03, 2006 10:12 pm
País: España
Ciudad: Por el valle del Tietar

Re: Ordenar código.

#3 Mensaje por Luis »

Muchas gracias

Avatar de Usuario
troglodita
Mensajes: 2328
Registrado: Lun Mar 29, 2010 10:47 am
País: España
Ciudad: Alcorcón Madrid

Re: Ordenar código.

#4 Mensaje por troglodita »

Qué bien y qué pronto, le dijo la tonta al tonto.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado