AFAIK, c'est une bizarrerie intégrée à l'IDE Arduino. La meilleure solution de contournement à laquelle je peux penser est une structure de fichiers comme:
ArduinoWorkspace --- /myproj/ ----+ /src/ --------+ myproj.cpp
+ myproj.ino + sensor.h
+ sensor.cpp
+ (more files)
, où myproj.cpp est simplement #include
main.cpp. Cela devrait laisser vos fichiers de projet "propres" afin qu'ils fonctionnent également dans un environnement plus typique.
Mise à jour:
J'ai emprunté le nom "main" à votre question, mais à la réflexion, "main" est un nom réservé, spécifiquement, chaque programme C ou C ++ a un code main.c ou main.cpp comme code de niveau supérieur, fourni par le système si vous n'en fournissez pas. J'ai donc évité de l'utiliser comme nom de dossier et de projet (mais n'hésitez pas à l'essayer) et j'ai mis à jour le diagramme. Vous avez besoin d'un dossier de projet et d'un fichier .ino du même nom. Le fichier .ino pourrait
#include <src/anything-else-you-like>
, par exemple, votre fichier de code de niveau supérieur, tirant ainsi tout le reste. Vous devrez peut-être pour votre .ino à #include
chacun des fichiers dans le src
dossier, si le compilateur ne comprend pas par lui-même, c'est là que se trouvent vos autres fichiers.
BTW, si vous utilisez le nom main.cpp pour votre fichier supérieur, il devra appeler les fonctions setup () et loop () (et la fonction d'événement série, si vous l'utilisez). Il est probablement préférable de laisser le nom `` principal '' seul, de laisser le système fournir le même principal que chaque programme Arduino obtient par défaut, et d'écrire votre code de projet de la manière typique d'Arduino - en commençant par setup () et loop ().
myproj.cpp
tu veux diremyproj.ino
? Parce que je ne vois pas oùmyproj.cpp
est!Lorsque vous avez un projet composé d'un certain nombre de
.INO
fichiers, comment l'IDE est-il censé savoir lequel est le "principal"? Pendant la compilation, l'EDI concatène tous les.INO
fichiers ensemble en un seul fichier monolithique. Il fait cela en commençant par le "principal" et ajoute ensuite chacun des autres par ordre alphabétique à la fin.Cela se fait de cette façon afin que vos inclusions et variables globales, que vous devez mettre dans votre
.INO
fichier "principal" , soient au début du programme terminé.Pour ce faire, l'IDE doit savoir lequel des fichiers est le "principal". Et la façon dont cela fonctionne est de trouver celui qui porte le même nom que le dossier dans lequel se trouve l'esquisse.
Dans UECIDE, je vais plus loin et je transforme tout le dossier en un document composé pour que vous n'ayez plus à entrer dans un dossier et à ouvrir un
.INO
fichier pour ouvrir une esquisse - le dossier lui-même est le projet d'esquisse dans son intégralité. Encore une fois, ce type de dossier est identifié comme.INO
contenant un fichier qui porte le même nom que le dossier.la source