Разделить код Arduino на несколько файлов с помощью Arduino IDE
Я работаю над очень длинным кодом, который требует определения нескольких функций. Я хочу разделить код на два файла: основной код ("Feeder_Control" на скриншоте) и функции ("соединения" на скриншоте) Как импортировать второй файл в основной код, чтобы использовать его функции?
PS: В C/C++ то же самое делается с #include "connections.h". Как это делается в Arduino IDE.
.
@Salitha Indrajith Pathiraja, 👍16
Обсуждение2 ответа
Лучший ответ:
Нет необходимости использовать директиву #include для дополнительного файла .ino.
Перед началом компиляции Arduino IDE объединяет все файлы .ino в вашем скетче в один файл, начиная с файла .ino, который соответствует имени папки sketch, а затем остальные файлы .ino в алфавитном порядке. Таким образом, нет никакой разницы между одним массивным файлом .ino и взломом одного и того же кода среди нескольких файлов .ino, кроме большей простоты навигации по коду с помощью вкладок. После небольшой дополнительной обработки этот файл компилируется как C++.
Ссылка: https://arduino.github.io/arduino-cli/latest/sketch-build-process/#pre-processing
Два комментария для ответа от per1234 (хотя и старые): В проекте может быть несколько файлов .ino. Однако:
- Нельзя отделять часть препроцессора от основного файла (файла с именем проекта), который должен включать ВСЮ предварительную обработку.
- Arduino IDE компилирует все файлы проекта в определенном порядке (в алфавитном порядке по имени файла) и включает их в основной файл .ino на этапе компоновки. Код в более поздних файлах .ino может получать доступ к переменным и функциям, определенным в более ранних файлах, но не наоборот.
- C++ против языка Arduino?
- avrdude ser_open() can't set com-state
- Как читать и записывать EEPROM в ESP8266
- Float печатается только 2 десятичных знака после запятой
- устаревшее преобразование из строковой константы в 'char*'
- Запрограммировать ATMega328P и использовать его без платы Arduino.
- Разница между print() и println()
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
Хотя общепринятый ответ работает, я чувствую, что Arduino "IDE" отлично подходит для начинающих, но он не очень масштабируется дальше пары файлов. Я настоятельно рекомендую проверить [platformio](https://platformio.org) так как он обеспечивает гораздо лучшее управление проектами за счет интеграции с [atom](https://atom...io) и [vscode](https://code.visualstudio.com), позволяет работать с различными фреймворками, включая Arduino for AVR, STM32, ESP8266, ESP32 и т.д., а также поддерживает отладку, если у вас есть необходимое оборудование., @Shreyas Murali
[Не пересекайте столб.](https://meta.stackexchange.com/q/64068) Вы уже [спрашивали об этом ТАК](https://stackoverflow.com/q/54194083)., @gre_gor