R
Что гуглить, чтоб понять, как сделать?
А то я сделал не зная и он мне странные ошибки начал выдавать
Выделяем часть кода в отдельный файл, укладываем рядом со скетчем, а потом в том месте скетча, где оно должно находиться, вставляем конструкцию #include "имя нашего файла с выделенными кусками кода".
Препроцессор еще до компиляции врежет содержимое дополнительного файла в скетч в том самом месте, где находится директива #include
Вариант второй, более правильный:
Выделяем часть кода, содержащую требуемые функции в отдельный файл. При этом данные функции не должны использовать никаких функций, переменных и классов из основного файла программы. Требование необязательное, но его несоблюдение потребует построения дополнительных связей в виде объявления переменных из другого модуля как extern, описания прототипов функций и создает излишнюю сложность связей кода и серьезно осложняет повторное использование кода. Короче говоря, лучше без крайней необходимости так не делать.
файлу даем какое-нибудь имя и расширение .cpp. Например, file.cpp.
Делаем второй файл с прототипами функций, которые будут использоваться в основном файле программы. Даем ему то же имя, но другое расширение - .h
Выкладываем получившиеся два файла в папку со скетчем.
добавляем в начало скетча строку
#include "имя получившегося файла с расширением.h"
Сверхпростой и в общем-то бессмысленный пример.
Допустим, что в наш файл была выделена функция function, имеющая параметром int и возвращающая int.
Файл с функцией file.cpp:
Код (Text):
int function(int i)
{
return(i);
}
Файл с прототипом функции file.h:
Код (Text):
int function(int);
Скетч (test.ino):
Код (Text):
#include "file.h"
setup()
{
Serial.begin(9600);
}
loop()
{
Serial.println(function(millis()%2));
}
Вариант третий, еще более правильный.
То, что получилось во втором варианте копируется в папку с библиотеками в подпапку с именем, которое совпадает с именем файла с функциями без расширения. А еще лучше, оформляется в архив, как библиотека, чтобы было просто ее устанавливать в IDE.
PS. Arduino IDE не содержит вменяемых средств для работы с проектами, содержащими более одного файла.
Она умеет по факту только открывать уже готовый такой проект, показывая все его файлы (они должны все лежать в одной папке) во вкладках, и подключать к проекту внешние библиотеки.
Так что придется делать все это расчленение во внешнем текстовом редакторе, укладывая результаты в папку со скетчем, а потом уже открывать его в Arduino IDE.
Если же делается библиотека (вариант три) то файлы библиотеки придется всегда править чем-то внешним по отношению к Arduino IDE.