Як написати модульний код для arduino?

Я хотів би створити програму з окремими модулями, чи можливо це, використовуючи IDE Arduino?

2

5 Відповіді

Хоча ви можете створити власні бібліотеки для Arduino, простий спосіб зробити код багаторазового використання - це створення файлу заголовка (.h), який містить код, який ви хотіли б зробити багаторазовим.

Зокрема, в IDE Arduino створіть нову вкладку з деяким назвою foo .h , а у вашій головній вкладці додайте #include "foo.h" у верхній частині коду. Що це, по суті, копіює код з foo.h у свій код під час побудувати процес . Простий у виконанні, він дійсно допомагає організувати більш складний код, і у вашому випадку, допомагає з повторним використанням коду.

Ви можете alternativly використовувати "Нормальні файли Arduino коду (без видимого розширення), файли C (розширення. C, C ++ файли (. Cpp) або файли заголовків (. H)".

І одна додаткова записка, яка допоможе вам - файли заголовків не мають доступу до деяких типових команд і функцій Arduino, таких як delay() або Serial , якщо ви не додасте < code> #include "Arduino.h" . Однак для версій IDE менш ніж 1.0 використовуйте #include "WProgram.h" . Це дасть вам доступ до цих функцій.

2
додано

Ескізи Arduino можуть включати бібліотеки (див. https://www.arduino.cc/en/Guide/Libraries ).

Щоб працювати з IDE Arduino, така бібліотека повинна дотримуватися певної структури папок та конвенцій іменування (як описано в вищевказаному посібнику).

Крім того, він схожий на модульний код будь-якою іншою мовою. Канонічна мова в бібліотеках Arduino - це C ++.

Оскільки регулярна установка IDE Arduino вже поставляється з попередньо встановленими безліччю бібліотек, ви можете подивитися і перейти звідти.

Я рекомендую вам переглянути приклади ескізів (з меню "Приклади"). Кожного разу, коли ви бачите вислів #include у верхній частині ескізу, у вас є підказка, де слід шукати далі, щоб краще зрозуміти внутрішні твори.

2
додано

Код ескізу можна легко розділити на кілька файлів, створивши нову вкладку (файл) без розширення імені файлу або .ino ( джерело ). Немає необхідності в #include s, оскільки IDE Arduino поєднує ці файли для процесу збирання.

Для правильної модуляції створіть бібліотеку або перегляньте посилання вище, щоб отримати додаткову інформацію про використання .h/.c/.cpp як модулів.

0
додано

Я хотів би створити програму з окремими модулями, чи можливо це зробити за допомогою IDE Arduino?

відповідь залежить від вашого коду.

Написання модульного коду в основному є процесом мислення:

1) ви повинні спроектувати свій код логічної моделі: замість того, щоб встановити світло на контакт 2, ви спроектуєте свій код, щоб встановити PIN-код, використовуйте цей код для встановлення PIN-коду, вказаного як LED_PIN, а потім визначте LED_PIN як PIN-2 . За допомогою цього підходу ви можете просто переосмислити LED_PIN у вашому новому проекті, щоб використовувати той самий код.

2) ви повинні спроектувати код зверху вниз: замість того, щоб почати писати код відразу, розбити його на логічні блоки, спроектувати вхід і вивід кожного блоку, щоб вони працювали разом. це найважча частина написання модульного коду.

після цього, зламання коду до файлів .c/.h - це шматок пирога.

0
додано

Ну .... Відповіді цікавляться, але залежать від того, що JuanV має на увазі, коли він каже "розділені модулі" ... Для мене, як "старий таймер програмного забезпечення", "розділені модулі" означають, що я будую центральний блок коду ("гайка") та модуль завантаження користувача, які автоматично "підключені" до гайок, розширюючи цю функцію. Трохи схоже на драйвер принтера, який ви додаєте до своєї системи, і який додає функцію для всього програмного забезпечення. Коли я дивлюся на мої минулі дед, використовуючи це, я повинен визнати, що у мене є деякі проблеми, які думають про це на Arduino. Якщо ви шукаєте, то потрібно подумати про різні проблеми:

1) як оновити? Може бути, програма для Android отримає код з Інтернету та надсилає ці дані на Arduino через Bluetooth. Ви також можете подумати про додавання інтерфейсу Wi-Fi на Arduino

2) де зберігати новий шматочок коду ... Здається, ви можете писати на флеш "на льоту", але, здається, складно

Через цю другу точку, може бути, найпростіший спосіб полягає в тому, щоб створити колонтитулу, яка буде "інтерпретувати" дані (такими, які читають якийсь невеликий скрипт), а потім вам потрібно буде просто відправити дані. Я пропоную поглянути на ЧПУ з Arduino. У більшості випадків вони використовують інтерпретатор GCode. GCode - це дескриптна програма для машини з ЧПУ. Тому інтерпретатор прочитати код і відповідно до коду, відправляти "замовлення" на машину. Може бути, така річ буде гарною відправною точкою.

З іншого боку, якщо те, що ви називаєте "модульним підходом", є лише способом побудови lib і повторного їх використання, то відповідь лорда Гонка - це шлях :)

0
додано