Я хотел бы создать программу с разделенными модулями, возможно ли это с помощью Arduino IDE?
Эскизы Arduino могут включать библиотеки (см. https://www.arduino.cc/ru/Guide/Libraries ).
Чтобы работать с IDE Arduino, такая библиотека должна придерживаться определенной структуры папок и соглашения об именах (как описано в приведенном выше руководстве).
Помимо этого, он похож на модульный код на любом другом языке. Канонический язык в библиотеках Arduino - это C ++.
Поскольку обычная установка IDE Arduino уже поставляется с предустановленной множеством библиотек, вы можете взглянуть и перейти оттуда.
Я рекомендую вам просмотреть примерные эскизы (из опции меню «Примеры»). Всякий раз, когда вы видите инструкцию #include в верхней части эскиза, у вас есть подсказка, куда следует смотреть дальше, чтобы лучше понять внутренние работы.
Хотя вы можете создавать свои собственные библиотеки для Arduino, простой способ сделать многоразовый код - создать файл заголовка (.h), содержащий код, который вы хотите сделать повторно используемым.
В частности, в Arduino IDE создать новую вкладку с некоторым именем foo .h
, а на главной вкладке добавьте #include "foo.h"
в верхней части кода. Что это значит, по сути, скопируйте код из foo.h
в свой код во время процесс сборки . В то время как простой в исполнении, он действительно помогает организовать более сложный код, и в вашем случае помогает с повторным использованием кода.
Вы можете альтернативно использовать «Нормальные файлы кода Arduino (без видимых расширений), файлы C (расширение .c), файлы C ++ (.cpp) или файлы заголовков (.h)».
И еще одно примечание, которое вам поможет - файлы заголовков не имеют доступа к некоторым типичным командам и функциям Arduino, таким как delay ()
или Serial
, если вы не добавите < code> #include "Arduino.h" . Однако для версий IDE менее 1.0 используйте #include "WProgram.h"
. Это даст вам доступ к этим функциям.
Код эскиза можно легко разбить на несколько файлов, создав новую вкладку (файл) без расширения имени файла или .ino ( источник ). Нет необходимости в #include
, так как IDE Arduino объединяет эти файлы для процесса сборки.
Для правильной модуляции сделайте библиотеку или см. Ссылку выше для получения дополнительной информации об использовании .h/.c/.cpp в качестве модулей.
Я хотел бы создать программу с разделенными модулями, возможно ли это с помощью Arduino IDE?
ответ зависит от вашего кода.
Написание модульного кода - это, в основном, мыслительный процесс:
1) вам нужно разработать код на логической модели: вместо того, чтобы устанавливать светодиод на контакте 2, вы создаете свой код для установки булавки, используйте этот код, чтобы установить контакт, указанный как LED_PIN, а затем определите LED_PIN для вывода 2 . С помощью этого подхода вы можете просто переопределить LED_PIN в своем новом проекте для использования того же кода.
2) вы должны разработать свой код сверху вниз: вместо того, чтобы сразу начать писать свой код, разбить его на логические блоки, спроектировать вход и выход каждого блока, чтобы они работали сообща сплоченно. это самая сложная часть написания модульного кода.
после этого разбиение кода на файлы .c/.h - это кусок пирога.
Ну ... Ответы интересуются, но зависят от того, о чем думает JuanV, когда он говорит «отделенные модули» ... Для меня, как «старого программного обеспечения таймера», «разделенные модули» означают, что я строю центральный блок кода (в двух словах) и модуль загрузки пользователя, который автоматически «подключается» к краткости, расширяя эту функцию. Немного напоминает драйвер принтера, который вы добавляете в свою систему, и который добавляет функцию для всего программного обеспечения. Когда я смотрю на мое прошлое, используя это, я должен признать, что у меня есть некоторые проблемы, думающие об этом на Arduino. Если вы ищете это, вы должны думать о различных проблемах:
1) как обновить? Возможно, приложение Android получит код из Интернета и отправит эти данные в Arduino через Bluetooth. Вы также можете подумать о добавлении интерфейса Wi-Fi на Arduino
2) где хранить новый кусок кода ... Кажется, вы можете писать на flash «на лету», но кажется сложным
Из-за этого второго момента, может быть, самым простым способом было бы создать ореховую скорлупу, которая будет «интерпретировать» данные (так, чтобы читать какой-то небольшой скрипт), а затем вам просто нужно отправить данные. Я предлагаю взглянуть на CNC, сделанную с Arduino. В большинстве случаев они используют интерпретатор GCode. GCode - это описательный язык для машины с ЧПУ. Таким образом, интерпретатор читает код и в соответствии с кодом отправляет «заказы» на машину. Возможно, такая вещь была бы хорошей отправной точкой.
С другой стороны, если то, что вы называете «модульным подходом», это просто способ создания библиотеки и повторного использования их, ответ лорда Гонка - это путь :)