Примеры больших кодовых баз Arduino и как они организованы?

Я хотел бы выяснить:

  • насколько большим может стать проект Arduino, есть ли какой-то предел?
  • существуют ли примеры больших баз с открытым исходным кодом? Я провел некоторое исследование, но нашел только примеры проектов с одним файлом .ino. Существуют ли проекты с несколькими файлами, например, функциями, константами в отдельных файлах, например, чтобы избежать файла 10K+ .ino?

, 👍1

Обсуждение

проверьте исходный код некоторых библиотек, @jsotola

здесь https://github.com/jandrassy/Regulator, @Juraj

и новый https://github.com/jandrassy/IsgModbusTcpSG, @Juraj

Да, существуют ограничения-как и в любой среде программирования. приложения для 3d-принтеров, как правило, имеют очень узкое пространство для записи., @Dave Newton


4 ответа


0

Каждый скетч использует флэш-память, вы можете увидеть это при компиляции своего проекта. Вы также можете увидеть, сколько процентов вы использовали.

И, как объясняет jsotola, библиотеки являются примерами того, как можно использовать несколько файлов.

Однако рядом с тобой .сцена ino (в той же папке) вы можете поместить файлы .h, .c и .cpp, которые автоматически компилируются (при использовании файла .ino). Однако, если вы используете слишком много файлов, потому что вкладки расположены горизонтально в среде IDE Arduino, лучше использовать приличный редактор. И при этом вы используете Arduino IDE (только) для компиляции.

,

1

Большие проекты, скорее всего, не разрабатываются с помощью Arduino IDE. Arduino IDE была создана для дизайнеров/изобретателей, а не для программистов.

Arduino родился в Институте проектирования взаимодействия Ivrea как простой инструмент для быстрого прототипирования, предназначенный для студентов, не имеющих опыта работы в области электроники и программирования.

Источник

Программисты будут использовать полноценную среду IDE, которая имеет множество функций, необходимых программисту ежедневно, таких как:

  • эффективная обработка нескольких файлов
  • позволяет создавать библиотеки вместо простой настройки() и цикла()
  • завершение кода (предложения по мере ввода)
  • отладка (проверка и изменение переменных во время выполнения)
  • рефакторинг (изменение структуры вашего кода без изменения поведения)
  • встроенный контроль версий (например, Git / Github)

Такой IDE может быть Eclipse с плагином Arduino или Atmel Studio и, возможно, Visual Studio.

Итак, что вам нужно искать? Не ищите файлы .ino. Вместо этого поищите код .h и .cpp, как и в других кодах, отличных от Arduino C++.

Некоторые примеры:

  • SPI: 297 строк
  • Провод: 453 линии
  • Программный материал: 486 строк
  • I2S: 533 строки
  • USB-хост: несколько файлов, до 1600 строк
,

0

Вот пример того, как организовать по функциональным группам.
Другие хорошие сложные примеры можно найти при поиске
веб-сервера Arduino esp8266
site:github.com Предел-это в основном ваша IDE-если вы используете ArduinoIDE, предел составляет (без уже протестированных и работающих файлов lib) около 20 файлов, больше-это боль в a** для обработки.

Я сохраняю длину своих файлов в диапазоне от 500 до максимум 1000 строк. Для документирования и хранения диаграмм взаимосвязей (полезно для отладки) Я использую doxygen с расширением graph.

При использовании такой среды разработки, как eclipse, вы можете использовать больше файлов, у вас есть хороший обзор ваших классов, но время, которое нужно потратить (и изучить) на настройку проекта, изначально намного выше, и иногда в цепочке инструментов происходят (зависящие от выпуска) критические изменения.

,

1

Опять я опаздываю на вечеринку...

Если вы планируете создать более крупный проект и разделить вещи, вы можете воспользоваться преимуществами библиотек. Это будет работать, даже если вы по какой-то причине женаты на arduino ide. если вы не женаты на платформе arudino ide, это не так уж плохо, и делает библиотеки немного менее грязными, когда вы выполняете тяжелую работу по их настройке в первый раз.

Идея должна состоять в том, чтобы разбить вашу проблему на более мелкие проверяемые фрагменты кода и более мелкие проверяемые библиотеки. Если ваш код не зависит от функций arduino, вы можете полностью протестировать свою библиотеку на более крупной машине, чтобы убедиться в отсутствии ошибок (например, инструмент статического анализа злоупотреблений clangs, чтобы узнать, не допустили ли вы каких-либо ошибок с указателем https://clang-analyzer.llvm.org/)

Я вроде как подаю пример этого (https://gitlab.com/mikealger/ExampleArduinoProjectStructure) для студентов некоторое время назад, но я все еще думаю, что это удобно для тех, кто хочет создавать /управлять жизненным циклом проекта, я все еще использую основные идеи, когда выполняю разовые небольшие проекты, основанные на работе других, чтобы мои заметки были четкими, т. Е. https://gitlab.com/mikealger/celstronhomebrewgps

да, это, вероятно, бесстыдное продвижение, но я не входил в систему уже около 2 лет...

,