AFAIK, que é uma peculiaridade incorporada ao IDE do Arduino. A melhor solução que posso pensar é em uma estrutura de arquivos, algo como:
ArduinoWorkspace --- /myproj/ ----+ /src/ --------+ myproj.cpp
+ myproj.ino + sensor.h
+ sensor.cpp
+ (more files)
, onde myproj.cpp é apenas #include
main.cpp. Isso deve deixar os arquivos do projeto "limpos", para que também funcionem em um ambiente mais típico.
Atualizar:
Peguei emprestado o nome "main" da sua pergunta, mas, refletindo, "main" é um nome reservado, especificamente, todo programa em C ou C ++ tem um main.c ou main.cpp como código de nível superior, fornecido pelo sistema se você não fornece um. Portanto, evitei usá-lo como nome da pasta e do projeto (mas fique à vontade para experimentá-lo) e atualizei o diagrama. O que você precisa é de uma pasta do projeto e um arquivo .ino, com o mesmo nome. O arquivo .ino pode
#include <src/anything-else-you-like>
, por exemplo, seu arquivo de código de nível superior, puxando todo o resto. Você pode precisar do seu .ino para #include
cada um dos arquivos da src
pasta, se o compilador não descobrir por si só, é aí que estão os outros arquivos.
BTW, se você usar o nome main.cpp para o seu arquivo principal, ele precisará chamar as funções setup () e loop () (e a função de evento serial, se você usá-lo). Provavelmente é melhor deixar o nome 'main' sozinho, deixar o sistema fornecer o mesmo main todos os programas do Arduino, por padrão, e escrever o código do seu projeto da maneira típica do Arduino - começando com setup () e loop ().
myproj.cpp
você quer dizermyproj.ino
? Porque eu não vejo ondemyproj.cpp
está!Quando você tem um projeto composto por vários
.INO
arquivos, como o IDE deve saber qual é o "principal"? Durante a compilação, o IDE concatena todos os.INO
arquivos juntos em um arquivo monolítico. Faz isso começando com o "principal" e, em seguida, acrescenta cada um dos outros em ordem alfabética ao final.Isso é feito dessa maneira para que suas variáveis globais e inclusas, que você deve colocar no
.INO
arquivo "principal" , estejam no início do programa finalizado.Para fazer isso, o IDE precisa saber qual dos arquivos é o "principal". E a maneira como isso funciona é encontrar aquele que tem o mesmo nome da pasta em que o esboço está.
No UECIDE, dou um passo adiante e transformo a pasta inteira em um documento composto, para que você não precise mais entrar em uma pasta e abrir um
.INO
arquivo para abrir um esboço - a própria pasta é o projeto inteiro do esboço. Novamente, esse tipo de pasta é identificado como tendo um.INO
arquivo com o mesmo nome da pasta.fonte