Autor Tema: Programar secuencia de movimiento. Ayuda.  (Leído 235 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado aldodavilam

  • PIC10
  • *
  • Mensajes: 12
Programar secuencia de movimiento. Ayuda.
« en: 05 de Diciembre de 2018, 17:51:12 »
Hola muy buenas a tod@s de la gran comunidad de todopic.com.ar, este momento vengo a ustedes para que me presten un poco de su sabiduría para la realización de un proyecto.

I.
Deseo realizar como un robotcito de suelo,  que ejecute las secuencia de movimiento.  Cabe aclarar que son por decir así, dos tipos de programación.
1. La programación principal la cual es la que se graba en el microcontrolador
2. Es la programación de secuencia de movimiento ingresada por el usuario.

II.
La idea principal es que el robot de suelo esperé la secuencia de movimiento, así por ejemplo con los botones ordenarle que dé dos pasos hacia delante y que gire a la derecha y que haga un paso hacia delante .  (Cada paso esta constituido de una distancia de 15cm y los giros de derecha o izquierda, son giros de 90°)

Se debe programar el PIC, para que espere la introducción de secuencia de movimiento que se debe realizara al pulsar los botones en cualquier conjunto de puertos . Algo así, como que guarde una especie de tabla, que  guarde el orden lógico de la introducción de los secuencia ( tipo como una stack)... Algo que no se como realizar.

Así que la persona introducirá la secuencia de movimiento, el pic guardará la secuencia, y después la reproducirá en el orden que se introducio.

Disculpen, si no se entendió bien, pero más o menos puede demostrar la idea que se quiere abordar.  Espero que me puedan ayudar aunque sea un poco.

Y les deseo éxito a todos y Felices Fiestas Navideñas.

Desconectado elreypic2

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 920
Re:Programar secuencia de movimiento. Ayuda.
« Respuesta #1 en: 05 de Diciembre de 2018, 19:05:02 »
Que tal aldodavilam,

Tu petición más bien parece solicitud de trabajo que ayuda. Para ponerte en contexto, aquí en el foro nadie va a realizar tu trabajo (o tarea escolar). Como bien mencionas en el tema, solicitas ayuda, entonces meustra lo que has hecho, como esquemáticos, tipo de microcontrolador, el motor que vas a usar, los avances que tienes y en sí cual es tu problema puntual.
La idea del foro es ayudar en cosas puntuales y no en hacer el trabajo.
Ahorq eu si lo que deseas es que se te haga el trabajo, entonces tendrás que pagar por ello y si es así cambia todo. Puedes solicitar enviarme un mensaje privado y podemos ver la cotización de trabajo o bien puedes contactar a alguien más.
Espero no haber sido rudo, pero son las reglas del foro en ayudar a los nuevos usuarios a entender el funcionamiento del mismo.

elreypic.

Desconectado aldodavilam

  • PIC10
  • *
  • Mensajes: 12
Re:Programar secuencia de movimiento. Ayuda.
« Respuesta #2 en: 06 de Diciembre de 2018, 14:55:30 »
Buenas, entiendo el punto que planteas, pero NO. No deseo que nadie haga mi trabajo, sino no tiene chiste, el aprender.

Lo que necesito saber como se puede lograr una especie de tabla o pila. Es que guardar el orden lógico.

Es decir si pongo diferente botones, cada botón aumentará en UNO cada variable. Y después quiero reproducirlo o mostrarlo, PERO se necesita hacer en el orden en que se presionó.

Así que la pregunta es, como lograr un tipo de pila, que guarde un orden de pulsos, digamos..

Gracias .

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4940
Re:Programar secuencia de movimiento. Ayuda.
« Respuesta #3 en: 06 de Diciembre de 2018, 16:40:55 »
Tienes que almacenar cada pulsación en un array e incrementar un índice para almacenar la siguiente pulsación. Esa es la parte fácil.

¿Cuánto tiempo le quieres dedicar más o menos?

Desconectado aldodavilam

  • PIC10
  • *
  • Mensajes: 12
Re:Programar secuencia de movimiento. Ayuda.
« Respuesta #4 en: 13 de Diciembre de 2018, 04:09:10 »
Amigo, muchas gracias por responder. Estuve buscando info sobre eso array, y pues no estoy muy claro de como usarlo. Y pues más no se hayan tanto resultado en lenguaje ensamblador, quisiera por lo menos ver algún ejemplo sencillo, para entender como funciona y sacar mis propias conclusiones. 

Igual, muchísima gracias. Saludos.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6994
Re:Programar secuencia de movimiento. Ayuda.
« Respuesta #5 en: 13 de Diciembre de 2018, 09:06:06 »
Lo hago simple porque para complejo luego podes hacerlo vos... Supongamos que tu robot tiene 4 funciones, la de avanzar 1 vuelta completa de rueda, retroceder una vuelta completa de rueda, girar a la izquierda 90 grados, girar a la derecha 90 grados.

Como observas la cantidad es "fija"... Todo tu programa, el de cargar las cosas al PIC, grbar la memoria, mover los motores, etc va a estar al comienzo de la memoria FLASH. Luego a partir de alguna posicion de memoria vamos a tener las acciones que vos prorgamaste. Lo que vos tenes que hacer es crear una tabla dentro del PIC. Supongamos:

   ORG 0x500
TABLA_ACCIONES:
   CALL AVANZAR
   CALL AVANZAR
   CALL GIRA_IZQ
   CALL GIRA_IZQ
   CALL FIN


Lo que tenes que lograr es intentar programar esos valores en la FLASH... esos valores van a depender de lo que vos quieras que haga el robot. Una ves que le das la orden, el robot ejecutara TABLA_ACCIONES, y cuando llegue a FIN podes preguntar si esto debe ocurrir una sola ves o volver a repetirse.

Esto si pensas hacerlo todo en el PIC.
Obviamente que podes recurrir a una EEPROM que tiene mas ciclos de lectura escritura... en ese caso vas a guardar por ejemplo estos valores:
0x00 para avance
0x01 para retroceso
0x02 para giro izq
0x03 para giro der
0xFF para FIN

entonces vas a leer la EEPROM y hacer uso de una tabla:

TABLA_ACCIONES:
   ADDWF  PCL, W
   CALL  AVANZAR
   CALL  RETROCEDER
   CALL  GIRO_DER
   CALL  GIRO_IZQ

Ahi tenes una idea de como implementarlo.... Obviamente la podes complicar un poco mas. Por ejemplo usar 2 bytes para cada acción, y que el primer byte te indique, la acción, algun modo/escala, y finalmente el tiempo realizando esa acción. Ej: Avanzar en función de: vueltas completas, grados, pasos.

Como te dijo Picuino esta es la parte mas sencilla de hacerlo. La mas complicada para mi va a ser el programa en la PC para cargarle eso al PIC, no me refiero a la conexión sino a la interfaz de usuario. Y si pensas hacerlo con el PIC y un LCD, entonces la interfaz de usuario en el LCD.

Desconectado aldodavilam

  • PIC10
  • *
  • Mensajes: 12
Re:Programar secuencia de movimiento. Ayuda.
« Respuesta #6 en: 14 de Diciembre de 2018, 21:48:45 »
Muchas gracias por responder, tendré que ponerle mucho empeño en eso, pues lo que más complicado es pienso es la forma de guardar los datos en el orden pulsado, y luego reproducirlo dependiendo al movimiento, así que una pesona le puede dar la orden de 2 pasos adelante. Y otro ala izquierda y un paso.

Así es,  me imagino una tipo de pila, que guarda los datos en orden.

Adjuntare una imagen donde se muestra la idea de un supuesto diagrama de flujo que elabore.

Desconectado aldodavilam

  • PIC10
  • *
  • Mensajes: 12
Re:Programar secuencia de movimiento. Ayuda.
« Respuesta #7 en: 14 de Diciembre de 2018, 21:53:57 »
A lo que me refiero es que el pic, memorice las pulsaciones hechas por la persona. Y en serio muchas gracias,  se me ha venido algunas ideas  Saludos, y Felices Fiestas.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4940
Re:Programar secuencia de movimiento. Ayuda.
« Respuesta #8 en: 15 de Diciembre de 2018, 15:02:04 »
Cuando te enfrentas a un problema que te resulta difícil, lo habitual es pensar en un problema mucho más sencillo e intentar resolverlo. Una vez resuelto, se intenta ir un poco más allá.
Así hasta que resuelvas el problema grande.
Un ejemplo de esto es el "Hola mundo", que suele ser el primer problema. En tu caso, podría ser encender un led si se presiona un pulsador. Algo muy sencillo y seguir desde ahí poco a poco.


A mí me gusta enfrentar los problemas de programación de microcontroladores a la vez con las dos metodologías Top-down y bottom-up:
https://es.wikipedia.org/wiki/Top-down_y_bottom-up
Desde abajo entiendes mejor los problemas prácticos del problema y del micro.
Desde arriba se ve mejor para dónde hay que ir y como enfocar el problema en conjunto.


Saludos.


 

anything