Vectores en Arduino


Estoy haciendo un vector de "waypoints" en el Arduino. Cada waypoint es un objeto. El Arduino obviamente necesitará almacenar varios waypoints para la navegación de waypoints. Pero en lugar de almacenar estos waypoints en una matriz preprogramada estándar, el usuario deberá poder agregar, eliminar waypoints y moverlos. Desafortunadamente, Arduino no ofrece un tipo vectorial como biblioteca incorporada.

Actualmente estoy contemplando dos opciones:

  1. En Contenedor para objetos como C++ 'vector'?, alguien publicó una biblioteca de propósito general. No contiene ninguna eliminación de índice ni operaciones de movimiento. Pero contiene algunas estrategias de gestión de memoria.

  2. He utilizado malloc, dealloc, calloc en el pasado. Pero no me gusta esa opción en absoluto, especialmente con las clases. Pero es esta una mejor opción en mi senario?

¿ Cuál es el mejor camino para ¿bajar?

Author: jakebird451, 0000-00-00

4 answers

C++ estándar para Arduino podría ser una opción. Permite usar STL vector en Arduino.

 49
Author: Sibster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-05 14:33:09

Suena como si quisieras implementar una simple lista enlazada. Una lista vinculada le permite mover objetos (waypoints, en su caso) sin la sobrecarga asociada con vectores C++.

Aquí hay una implementación en GitHub.

 4
Author: augustzf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-27 19:08:14

El arduino tiene memoria limitada por lo que necesita saber cuántos waypoints permitirá. En cuyo caso una matriz simple para contener punteros de memoria (direcciones) de waypoints asignados proporcionará la secuencia/orden que necesita. Mantener una ranura de matriz libre como área de trabajo permitirá que los waypoints se muevan (reordenados).

 2
Author: Visual Micro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-08 15:58:58

También podría tener una matriz fija de estructuras waypoint e incluir una variable en la estructura si el waypoint está en uso o no. Al agregar un waypoint, todo lo que tiene que recorrer el array hasta encontrar una estructura que no está en uso.

 0
Author: Jake,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-24 01:58:06