AFAIK, esa es una peculiaridad integrada en el IDE de Arduino. La mejor solución que se me ocurre es una estructura de archivo similar a:
ArduinoWorkspace --- /myproj/ ----+ /src/ --------+ myproj.cpp
+ myproj.ino + sensor.h
+ sensor.cpp
+ (more files)
, donde myproj.cpp solo #include
es main.cpp. Esto debería dejar los archivos de su proyecto "limpios", de modo que también deberían funcionar en un entorno más típico.
Actualizar:
Tomé prestado el nombre "main" de su pregunta, pero reflexionando, "main" es un nombre reservado, específicamente, cada programa C o C ++ tiene main.c o main.cpp como su código de nivel superior, proporcionado por el sistema si usted no proporciona uno Así que evité usar eso como nombre de carpeta y proyecto (pero siéntase libre de probarlo) y actualicé el diagrama. Lo que necesita es una carpeta de proyecto y un archivo .ino dentro del mismo nombre. El archivo .ino podría
#include <src/anything-else-you-like>
, p. ej., el archivo de código de nivel superior y, por lo tanto, extraer todo lo demás. Es posible que necesite su .ino para #include
cada uno de los archivos en la src
carpeta, si el compilador no se da cuenta por sí solo, ahí es donde están sus otros archivos.
Por cierto, si usa el nombre main.cpp para su archivo superior, tendrá que llamar a las funciones setup () y loop () (y función de evento en serie, si la usa). Probablemente sea mejor dejar solo el nombre 'main', dejar que el sistema proporcione el mismo main que cada programa Arduino obtiene por defecto y escribir el código de su proyecto de la manera típica de Arduino, comenzando con setup () y loop ().
myproj.cpp
, Que quiere decirmyproj.ino
? ¡Porque no veo dóndemyproj.cpp
está!Cuando tiene un proyecto compuesto por varios
.INO
archivos, ¿cómo se supone que el IDE sabe cuál es el "principal"? Durante la compilación, el IDE concatena todos los.INO
archivos en un solo archivo monolítico. Hace esto comenzando con el "principal" y luego agrega cada uno de los otros alfabéticamente hasta el final.Se hace de esta manera para que sus inclusiones y variables globales, que debe poner en su
.INO
archivo "principal" , estén al comienzo del programa terminado.Para hacer esto, el IDE debe saber cuál de los archivos es el "principal". Y la forma en que funciona es encontrando el que tiene el mismo nombre que la carpeta en la que está el boceto.
En UECIDE , llevo un paso más allá y convierto toda la carpeta en un documento compuesto para que ya no tenga que ingresar una carpeta y abrir un
.INO
archivo para abrir un boceto: la carpeta en sí es todo el proyecto de boceto. Una vez más, este tipo de carpeta se identifica como que tiene un.INO
archivo con el mismo nombre que la carpeta.fuente