Примеры больших кодовых баз Arduino и как они организованы?
Я хотел бы выяснить:
- насколько большим может стать проект Arduino, есть ли какой-то предел?
- существуют ли примеры больших баз с открытым исходным кодом? Я провел некоторое исследование, но нашел только примеры проектов с одним файлом .ino. Существуют ли проекты с несколькими файлами, например, функциями, константами в отдельных файлах, например, чтобы избежать файла 10K+ .ino?
@J. Doe, 👍1
Обсуждение4 ответа
Каждый скетч использует флэш-память, вы можете увидеть это при компиляции своего проекта. Вы также можете увидеть, сколько процентов вы использовали.
И, как объясняет jsotola, библиотеки являются примерами того, как можно использовать несколько файлов.
Однако рядом с тобой .сцена ino (в той же папке) вы можете поместить файлы .h, .c и .cpp, которые автоматически компилируются (при использовании файла .ino). Однако, если вы используете слишком много файлов, потому что вкладки расположены горизонтально в среде IDE Arduino, лучше использовать приличный редактор. И при этом вы используете Arduino IDE (только) для компиляции.
Большие проекты, скорее всего, не разрабатываются с помощью 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 строк
Вот пример того, как организовать по функциональным группам.
Другие хорошие сложные примеры можно найти при поиске
веб-сервера Arduino esp8266
site:github.com Предел-это в основном ваша IDE-если вы используете ArduinoIDE, предел составляет (без уже протестированных и работающих файлов lib) около 20 файлов, больше-это боль в a** для обработки.
Я сохраняю длину своих файлов в диапазоне от 500 до максимум 1000 строк. Для документирования и хранения диаграмм взаимосвязей (полезно для отладки) Я использую doxygen с расширением graph.
При использовании такой среды разработки, как eclipse, вы можете использовать больше файлов, у вас есть хороший обзор ваших классов, но время, которое нужно потратить (и изучить) на настройку проекта, изначально намного выше, и иногда в цепочке инструментов происходят (зависящие от выпуска) критические изменения.
Опять я опаздываю на вечеринку...
Если вы планируете создать более крупный проект и разделить вещи, вы можете воспользоваться преимуществами библиотек. Это будет работать, даже если вы по какой-то причине женаты на arduino ide. если вы не женаты на платформе arudino ide, это не так уж плохо, и делает библиотеки немного менее грязными, когда вы выполняете тяжелую работу по их настройке в первый раз.
Идея должна состоять в том, чтобы разбить вашу проблему на более мелкие проверяемые фрагменты кода и более мелкие проверяемые библиотеки. Если ваш код не зависит от функций arduino, вы можете полностью протестировать свою библиотеку на более крупной машине, чтобы убедиться в отсутствии ошибок (например, инструмент статического анализа злоупотреблений clangs, чтобы узнать, не допустили ли вы каких-либо ошибок с указателем https://clang-analyzer.llvm.org/)
Я вроде как подаю пример этого (https://gitlab.com/mikealger/ExampleArduinoProjectStructure) для студентов некоторое время назад, но я все еще думаю, что это удобно для тех, кто хочет создавать /управлять жизненным циклом проекта, я все еще использую основные идеи, когда выполняю разовые небольшие проекты, основанные на работе других, чтобы мои заметки были четкими, т. Е. https://gitlab.com/mikealger/celstronhomebrewgps
да, это, вероятно, бесстыдное продвижение, но я не входил в систему уже около 2 лет...
- Как организовать структуру проектов Arduino для удобства управления версиями?
- Проблема с датчиком температуры и влажности DHT11
- Получение ошибки ets 8 января 2013,rst cause:4,boot mode(1,6) wdt reset
- Выводы прерываний Arduino Mega 2560 и отображение портов с помощью поворотного энкодера
- Данные DHT11 из Arduino UNO в Firebase через ESP8266
- Объяснение кода MPU6050
- Бесполезная проводка коробки и код
- Измерение скорости двигателя постоянного тока с помощью поворотного энкодера
проверьте исходный код некоторых библиотек, @jsotola
здесь https://github.com/jandrassy/Regulator, @Juraj
и новый https://github.com/jandrassy/IsgModbusTcpSG, @Juraj
Да, существуют ограничения-как и в любой среде программирования. приложения для 3d-принтеров, как правило, имеют очень узкое пространство для записи., @Dave Newton