Какова правильная структура папок для включения локальных заголовков в мой проект Arduino?
Я разрабатываю «проект» с 5 Arduino (каждый с отдельными кодами), которые общаются друг с другом с помощью NRF24. Все 5 кодов различны, за исключением того, что они имеют общий заголовок «MyHeader.h». Arduino IDE заставляет имя файла .ino совпадать с именем папки, в которой он находится. В настоящее время у меня есть следующая структура:
[parentfolder]
MyHeader.h
[arduino1]
arduino1.ino
[arduino2]
arduino2.ino
[arduino3]
arduino3.ino
[arduino4]
arduino4.ino
[arduino5]
arduino5.ino
Теперь, если я использую следующее, я получаю сообщение об ошибке, что IDE не может найти заголовочный файл:
#include "../MyHeader.h"
Я вынужден использовать приведенную выше структуру из-за ограничений на имена папок в среде IDE, тогда как мне определенно хотелось бы иметь структуру, подобную следующей:
[parentfolder]
MyHeader.h
arduino1.ino
arduino2.ino
arduino3.ino
arduino4.ino
arduino5.ino
Как мне организовать свой проект, чтобы я мог включить свой заголовок (без явного дублирования файла в каждой папке)? Спасибо.
@APN, 👍0
Обсуждение1 ответ
Лучший ответ:
Причина, по которой вы не можете ссылаться на родительскую папку вашего скетча при компиляции, заключается в том, что Arduino IDE не компилирует ваш скетч в этой папке. Вместо этого он записывает файлы из самой IDE во временные файлы в папке "build" и компилирует их там, поэтому родительская папка не содержит вашего файла заголовка, потому что IDE не знает об этом.
Поэтому вам нужно поместить файл заголовка туда, о котором IDE действительно знает, и самое простое место — там, где находятся библиотеки.
Библиотека — это не что иное, как заголовочный файл в папке (оба названы одинаково) с необязательным исходным кодом и другими заголовочными файлами. Если вы поместите свой заголовок в папку в папке с библиотеками, IDE увидит его как библиотеку, и вы сможете включить его в любой скетч.
Итак, у вас будет:
Documents/
Arduino/
libraries/
MyHeader/
MyHeader.h
MyFancyProject/
NodeOne/
NodeOne.ino
NodeTwo/
NodeTwo.ino
NodeThree/
NodeThree.ino
- Существует ли точная процедура подключения между esp32 и ультразвуковым датчиком(HC-SR04)?
- Файл «Project.ino» должен находиться в одноименной папке скетча, но это
- Датчик DHT11 сгорел после подключения к плате arduino
- C++ против языка Arduino?
- avrdude ser_open() can't set com-state
- Как читать и записывать EEPROM в ESP8266
- Float печатается только 2 десятичных знака после запятой
- устаревшее преобразование из строковой константы в 'char*'
проверить https://uecide.org, @jsotola
поместите MyHeader.h в папку Documents/Arduino/libraries/MyHeader, @Juraj
Поддерживает ли ваша файловая система символические ссылки?, @Edgar Bonet