Go Down

Topic: CODIGO PARA UNA EEPROM (Read 355 times) previous topic - next topic

Dani_Juarez

Oct 01, 2017, 09:37 pm Last Edit: Oct 01, 2017, 10:32 pm by surbyte
Buenas soy nuevo en esta pagina para postear espero hacerlo bien jeje;
en fin tengo un código que no logro entender del todo bien. Se trata de un código para mover un brazo robot por puerto serie con el teclado y almacenar las variables para después ejecutarlas y guardarlas si así desea. lo que no logro entender es bien bien como funciona cada "Void" que tiene el código por eso si alguien me puede dar una mano con una buena explicación me ayudaría muchísimo así puedo desarrollar un código propio en base al entendimiento de este; acá se los dejo para bajar espero puedan ayudarme se los agradecería muchísimo



surbyte

Lo hiciste mal.
Consultas en español foro en Español.
Si escribes en el foro en inglés, lo haces en inglés

Ahora lee las normas del foro por favor, 1er hilo de cada foro



Dani_Juarez

#2
Oct 02, 2017, 07:35 pm Last Edit: Oct 02, 2017, 07:41 pm by surbyte Reason: No repitas toda la respuesta anterior.
Ah bueno disculpe
pasa que como dije soy nuevo y no entendi mucho como se manejan los foros pero ya lo rre publique en el de español; Muchas gracias

Lucario448

Vaya, lo que tiene ese código es que lo de "modularizar" se lo tomaron en serio. Sólo la parte de manejar datos entrantes está separada en 5 funciones. No me sorprende que no lo logres entender.

Cada función hace lo siguiente:

serial: verifica si hay datos entrantes.
entrada_serial: lee el primer caracter para determinar la pieza a mover. Si es una 'p', pausa (detiene) la ejecución del autómata.
asignacion: mueve la pieza seleccionada según el siguiente caracter.
estado: dependiendo del comando, manda a memorizar (aparentemente porque cuando se reinicie o se apague el Arduino todos los cambio se perderán) una "figura" (supongo que se refiere como a una pose/posición o algo así); o a ejecutar el autómata (eso último ni idea de a qué se refiere).
mover: ejecuta los movimientos asignados previamente (sin autómata).
ultimo_registro: ¿la posición actual de las piezas va a un "registro"?
matriz_de_traslacion: sinceramente desconozco este algoritmo; pero sólo sé que se ejecuta en algo que llaman "primera sección".
ejecutar_automata: el nombre habla por sí sólo; es donde ocurre eso del autómata.

Creo que setup y loop está de más explicarlos.




Si mi explicación no te satisface; atribúyeselo a mi (prácticamente) nula experiencia sobre robótica mecánica (si se puede decir así).

Dani_Juarez

#4
Oct 10, 2017, 07:58 pm Last Edit: Oct 12, 2017, 12:47 am by surbyte
Quote
Si mi explicación no te satisface; atribúyeselo a mi (prácticamente) nula experiencia sobre robótica mecánica (si se puede decir así).
ahhh bueno aun así muchísimas gracias por tu ayuda el programa entiendo dentro de todo bien salvo por los Void que son "Ejecutar autómata" y "matriz de traslación" esos dos Void me traban porque no entiendo el algoritmo que usan
por esa casualidades no conoces algún experto en robotica para preguntarle que sea especialista en el tema en Español????

surbyte

No pierdas tiempo en entender que hace cada void sino cómo se comporta.

Aunque esto
Quote
lo que no logro entender es bien bien como funciona cada "Void" que tiene el código por eso si alguien me puede dar una mano con una buena explicación me ayudaría muchísimo así puedo desarrollar un código propio en base al entendimiento de este
me hace pensar que tienes que usar y/o explicar que hace cada rutina y por eso tu insistencia.

Es asi?

Dani_Juarez

No pierdas tiempo en entender que hace cada void sino cómo se comporta.

Aunque estome hace pensar que tienes que usar y/o explicar que hace cada rutina y por eso tu insistencia.

Es asi?

usar en realidad yo sabiendo bien como funciona me ayuda a abrir mas la cabeza y entenderlo para poder hacer uno propio
obvio que se lo ve que es un lindo laburito ese código me gusta y busco entenderlo
sino buscar una manera de guardar grados de servos en vectores almacenarlos en la eeprom y mandarlos a llamar cuando me haga falta debe haber una manera mas corta que el programa ese y busco entenderlo para mi tesis para hacer yo un código

surbyte

YO creo que el programa obdece al modelo cinematico del Robot
Será directo, inverso o de otro modo.

La matriz de translación justamente se arma de ese modo.

Mira este documento

Dani_Juarez

YO creo que el programa obdece al modelo cinematico del Robot
Será directo, inverso o de otro modo.

La matriz de translación justamente se arma de ese modo.

Mira este documento
muy buen documento eh estado leyendo  documentos así y yo también creo que se basa en eso
pero mi tesis es de una tecnicatura Superior no nos piden demostrar los cálculos matriciales del robot si saberlos pero no demostrarlos lo único que busco es hacer que se mueva solo los servos guardarlos de alguan manera en un Array o volver un array la eempro y guardar los valores y desues con un comando mandarlos a llamar para que se ejecuten y ande el robot
yo pude hacerlo mover por puerto serie; puede hacerlo mover con un celular pero lo que no puedo todavía es almacenar los grados para que queden guardados
mira te paso el codigo que tengo para manejar el brazo por puerto serie
a ese codigo cada servo tiene una letra tengo escribir la letra+los grados que quiero q se mueva y se mueve
pero no puedo guardar esa posicion
como podria hacerlo????
Code: [Select]
#include<Servo.h>

//Creamos los objetos servo
Servo servo;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;

unsigned char c; //Letra del Servo
byte posicion =0; //Posicion del servo


void setup()
{
  //Inicializamos los Servos
  servo.attach(13);
  servo2.attach(12);
  servo3.attach(11);
  servo4.attach(10);
  servo5.attach(7);
  servo6.attach(6);

  //Inicializamos la comunicacion por Serial
  Serial.begin(9600);

Serial.println("xxxxxxxxxBienvenido Usuarioxxxxxxxxxxx");

}

void loop(){

 
  if (Serial.available() >= 1)
  {

    c = Serial.read();
    posicion = Serial.parseInt();
     
    //Hora de mover los servos!
    if (c == 'a')
    {
      Serial.print("Motor1: ");
      Serial.println(posicion);
      servo.write(posicion);
      delay(10);
   
    }
    else if (c == 'b')
    {
      Serial.print("Motor2: ");
      Serial.println(posicion);
      servo2.write(posicion);
      delay(10);
    }
    else if (c == 'c')
    {
      Serial.print("Motor3: ");
      Serial.println(posicion);
      servo3.write(posicion);
      delay(10);
    }
    else if ( c == 'd')
    {
      Serial.print("Motor4: ");
      Serial.println(posicion);
      servo4.write(posicion);
      delay(10);
    }

    else if ( c == 'e')
    {
      Serial.print("Motor5: ");
      Serial.println(posicion);
      servo5.write(posicion);
      delay(10);
    }

    else if (c == 'f')
    {
      Serial.print("Motor6: ");
      Serial.println(posicion);
      servo6.write(posicion);
      delay(10);
    }


  }



}

Go Up