8-900-374-94-44
[email protected]
Slide Image
Меню

Arduino include: #include — Arduino Reference

«.h: Нет такого файла или каталога» — 2 простых исправления ошибки Arduino

Среда, 11 часов вечера. Вы только что потратили три часа на работу над своим следующим проектом Arduino, и, НАКОНЕЦ, вы готовы дать Ваш набросок закружился. Вы нажимаете «Загрузить», ладони вспотели от предвкушения, чтобы увидеть, как вся ваша тяжелая работа увенчается успехом. И тогда вы видите ошибку:

Нет такого файла или каталога.

Конечно, это случайная аберрация». Не о чем беспокоиться», — бормочете вы, изголодавшись по полубреду, снова нажимая «Загрузить». И еще раз эти сводящие с ума слова «нет такого файла или каталога» смотрят на вас в ответ с враждебной насмешкой газлайтинга.0003

Ты был здесь?

Если вы пытаетесь запустить скетч Arduino, но постоянно сталкиваетесь с ошибкой «нет такого файла или каталога», не волнуйтесь. На самом деле это довольно распространенная проблема, и есть два простых решения, которые почти всегда работают.

Продолжайте читать. Мы покажем вам, что они из себя представляют.

 

Нет такой ошибки файла!

Сообщения об ошибках могут быть такой головной болью. Однако они служат полезной цели, сообщая нам о том, что пошло не так. На первый взгляд, ошибка «нет такого файла или каталога» особенно раздражает, потому что кажется, что она нарушает это полезное правило. Конечно, есть файл или каталог! Вы только что сделали вещь, и она тут же, спрятанная в каталоге.

Но подождите, давайте посмотрим поближе. Если вы посмотрите на нижнюю часть Arduino IDE, где отображается сообщение об ошибке, вы увидите эту удобную маленькую кнопку с надписью «копировать сообщения об ошибках».

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

Эта функция копирования невероятно полезна. Например, вы можете вставить сообщение об ошибке в Google и узнать больше об ошибке. Или вы можете воспользоваться активным сообществом Arduino, попросив помощи на форуме. Однако для этой ситуации мы можем быть немного более простыми. Все, что мы собираемся сделать, это более подробно рассмотреть, что такое сообщение на самом деле говоря. Для этого просто запустите текстовый редактор вашего ПК и вставьте его в пустой экран.

 

Расшифровка ошибки «Нет такого файла»

Вот она, надоедливая ошибка во всей своей свежевставленной красоте.

Я разберу это для вас построчно.

  • Первая строка проста. Он просто описывает используемую версию Arduino, какая операционная система работает и какую плату вы выбрали.
  • Строка 2 начинает сосредотачиваться на проблеме.
    • Первый бит, «ручка», относится к названию программы. Это ваш эскиз, в основном.
    • Вторая часть обычно начинает сбивать людей с толку, но это легко понять, если знать. «10» в этом примере говорит вам, что ошибка произошла в строке 10 вашего скетча. «19» сообщает вам длину строки кода в пробелах и символах. Первое число обычно является более полезным из двух, потому что вы можете использовать его, чтобы найти ошибку в вашем эскизе.
  • Затем мы добираемся до дымящегося пистолета ошибки. Он говорит: «servo.h: нет такого файла или каталога».

Итак, эта штука, «Servo.h.» Это то, что нам нужно исправить, и благодаря строке 2, мы знаем, где их найти. Строка 10. всегда строка 10.

Теперь, когда мы немного лучше знаем, что происходит, давайте приступим к реализации исправления.

 

Ошибки нашего пути

Давайте тщательно проанализируем эту проклятую строку 10.

Он говорит «#include »

Когда мы проверяем этот код, эта строка сообщает компилятору Arduino IDE: «Эй, чтобы эта программа работала, вам нужно получить этот файл с именем servo.h ».

Допустим, у вас есть машина для изготовления этикеток, и вы хотели использовать ее для печати крутых мотивационных этикеток, например «Успех!» и «Продолжайте пробовать!» и «Смотри, Начос!» Чтобы это произошло, вам сначала нужно загрузить рулон этикеток. Нет рулона этикеток? Ну, тогда производитель этикеток не сработает.

Эскиз, который вы пытаетесь загрузить, похож на производителя этикеток. Файл (в нашем примере это файл с именем «servo.h») представляет собой рулон этикеток.

Таким образом, сообщение об ошибке на самом деле говорит что-то полезное. Он говорит: «Эй, программист, ты сказал, что мне нужен этот другой файл. Ну, я искал его, и его там нет. Что дает?»

Теперь мы знаем, что сообщение об ошибке не является полной чушью, давайте рассмотрим два наиболее распространенных сценария, которые его вызывают.

 

Сценарий 1. Толстые пальцы

Этот скетч написан вами. На самом деле это вы написали строку «#include». Первое, что вы должны проверить, это правильное написание и использование заглавных букв. Может вы неправильно написали название библиотеки? Или (как в примере ниже), возможно, вы написали не те буквы.

Таким образом, «servo.h» должен иметь заглавную букву «S». Полностью и с правильной заглавной буквой следует читать «Servo.h». Вы заметите выше, что слово servo меняет цвет, когда оно правильно пишется с заглавной буквы. Это изменение цвета означает, что имя библиотеки «Servo» распознается как «ключевое слово» в среде разработки Arduino IDE.

Имейте в виду, что это может быть не так для всех используемых вами библиотек. Другими словами, изменение цвета не всегда будет означать, что вы используете правильное написание или заглавные буквы, но часто это полезное визуальное напоминание.

О, и, наверное, хорошо бы упомянуть, что каждый в истории программирования Arduino в какой-то момент писал с ошибкой или неправильно писал слово с заглавной буквы. Удивительно, как долго вы можете смотреть на строку кода и пропустить что-то подобное.

Так что не парься.

 

Сценарий 2. Отсутствующие файлы

Это приводит нас к следующему распространенному сценарию ошибки «Нет такого файла или каталога».

Очень часто работа с Arduino включает в себя использование кода, который кто-то разработал и опубликовал в Интернете, а затем его адаптацию к вашему проекту. Это часть того, что делает работу с Arduino такой простой. Одна проблема, которая часто возникает, когда мы делаем это, заключается в том, что мы случайно вводим код без соответствующего файла.

Простой способ проверить, есть ли у вас файл, который ищет скетч, — это перейти в Sketch > Include Library из Arduino IDE. Затем найдите имя этой библиотеки.

К какой бы библиотеке ни обращался оператор #include, вы хотите просмотреть этот большой длинный список в поисках библиотеки с точно таким же именем. Если вы не видите там имя файла, это означает, что библиотека не установлена. Вам нужно будет добавить эту библиотеку, прежде чем скетч скомпилируется без ошибок.

Итак, как добавить эту библиотеку?

Самый простой способ — перейти в Sketch > Include Library > Manage Libraries. Arduino IDE откроет диалоговое окно, в котором вы сможете найти нужную библиотеку.

Убедитесь, что вы вводите именно то слово, которое соответствует строке #include. Как только вы найдете недостающую библиотеку, нажмите «Установить». Arduino IDE сообщит вам, что она устанавливает запрошенную вами библиотеку и соответствующим образом обновляет программное обеспечение.

Затем дважды проверьте, успешно ли установлена ​​библиотека, выбрав Sketch > Include Library. Вы должны увидеть свою новую библиотеку в раскрывающемся списке.

Хорошие новости! Если библиотека есть, теперь вы сможете скомпилировать свой скетч без ошибок.

 

Другие местоположения библиотек

Хорошо, есть одна маленькая ложка дегтя. Как эти чертовы мушки всегда умудряются так все усложнять?

Вот в чем дело. Не все библиотеки живут в этом удобном всплывающем окне внутри Arduino IDE. Сообщество Arduino бурлит умными идеями, но умность (в отличие от плавленого сыра) не всегда выражается в удобно стандартизированных, индивидуально упакованных кусочках. Есть тонн различных способов найти библиотеки Arduino в Интернете.

Если вы загружаете или копируете программу из Интернета, просто перейдите на страницу, где вы получили эту программу, и внимательно изучите библиотеку, на которую ссылается автор. Например, у них может быть ссылка на GitHub, место, где люди хранят множество библиотек кода.

Где бы вы ее ни нашли, обычно библиотека будет включена в пакет файла .zip. После того, как вы загрузили .zip-файл, запустите Arduino IDE и выберите «Скетч» > «Включить библиотеку» > «Добавить библиотеку .ZIP». Затем перейдите в папку, в которую вы загрузили файл, и выберите его. Предполагая, что в ваш рабочий процесс не вторгаются дополнительные мази, Arduino IDE выведет сообщение «Библиотека добавлена ​​в ваши библиотеки» прямо над темной областью, где появилась исходная ошибка «Нет такого файла или каталога».

Теперь все как обычно! Просто перейдите в Sketch > Include Library, и новая библиотека появится в раскрывающемся списке.

Как однажды сказал француз-дислектик крупному скрипачу: «Виола!»

Теперь вы знаете не один, а  два способа добавить новую библиотеку. Какое время быть живым!

 

Обзор

Итак, краткое резюме.

Мы рассмотрели два основных сценария, которые вызывают появление ошибки «Нет такого файла или каталога» после компиляции скетча:

  • Феномен толстых пальцев: Проверьте правописание и заглавные буквы! Если вы написали набросок, велика вероятность, что вы допустили маленькую ошибку. И не корите себя за это! Буквально каждый кодер делал это.
  • Перепутались отсутствующие файлы: В противном случае, если вы скопировали код у кого-то другого, проверьте, установлены ли правильные библиотеки. Не видите свою библиотеку? Установите его, используя метод, описанный выше, и все будет хорошо.

Не может быть таких вещей, как бесплатный обед, совпадение или дракон удачи. Но будьте уверены. Ваши файлы и каталоги? Они живы и здоровы.

Спецификация библиотеки — Arduino CLI

Это спецификация формата библиотеки Arduino, которая будет использоваться с Arduino IDE 1.5.x и выше.

  • rev.1 была реализована, начиная с Arduino IDE версии 1.5.3 (теперь заменена версией 2)
  • rev.2 будет реализован начиная с Arduino IDE версии 1.5.6
  • rev.2.1 будет реализован начиная с Arduino IDE версии 1.6.10
  • rev.2.2 будет реализован начиная с Arduino IDE версии 1.8.10

Этот новый формат библиотеки предназначен для использования в тандеме с Менеджером библиотек , доступным, начиная с Arduino IDE 1.6.2. Диспетчер библиотек позволяет пользователям автоматически загружать и устанавливать библиотеки, необходимые в их проектах, с помощью простого использовать графический интерфейс в Arduino IDE/Ардуино IDE 2.

0 и Веб-редактор Arduino а также arduino-clilib .

Доступна дополнительная информация о том, как работает диспетчер библиотек. здесь.

Программное обеспечение для разработки

Arduino поддерживает несколько архитектур микроконтроллеров (например, AVR, SAM и т. д.), что означает, что библиотекам может потребоваться работать с несколькими архитектурами. Новый формат библиотеки 1.5 не содержит специальной поддержки кросс-архитектурные библиотеки, но он предоставляет основанный на препроцессоре механизм для библиотек для целевых разделов код для конкретных архитектур.

См. также

  • Руководство по стилю библиотеки Arduino
  • Документация по процессу разрешения зависимостей библиотеки

Формат библиотеки 1.5 (версия 2.2)

Метаданные библиотеки

Наиболее значительным дополнением к формату является возможность добавлять информацию о самой библиотеке через файл свойств с именем library.properties .

Этот файл позволяет диспетчеру библиотек искать и устанавливать библиотеку и ее зависимости простым и автоматизированным способом. способ. Он должен находиться в корне папки библиотеки.

формат файла library.properties

Файл library.properties представляет собой список свойств типа «ключ=значение». Каждое поле в этом файле имеет кодировку UTF-8. Если не указано иное в противном случае ниже все поля обязательны для заполнения . Доступные поля:

  • имя — имя библиотеки. Имена библиотек должны содержать только основные буквы (A-Z или a-z) и цифры (0-9), пробелы ( ), символы подчеркивания (_), точки (.) и тире (-). Они должны начинаться с буквы или цифры. Они должны содержать в хотя бы одну букву. Обратите внимание, что библиотеки с
    имя
    значение, начинающееся с Arduino , больше не допускается дополнение к указателю менеджера библиотек поскольку эти имена теперь зарезервированы для официальных библиотек Arduino.
  • версия — версия библиотеки. Версия должна быть совместима с semver. 1.2.0 правильно; 1,2 принимается; r5, 003, 1.1c недействительны
  • автор — имя/псевдоним авторов и их адреса электронной почты (не обязательно) через запятую (,)
  • обслуживающий персонал — имя и адрес электронной почты сопровождающего
  • предложение
    — предложение, объясняющее назначение библиотеки
  • пункт — более подробное описание библиотеки. К этому будет добавлено значение предложения , так что вы следует начать с написания второго предложения здесь
  • категория — (по умолчанию Без категории ) допустимые значения:
    • Дисплей
    • Связь
    • Сигнальный вход/выход
    • Датчики
    • Управление устройством
    • Время
    • Хранение данных
    • Обработка данных
    • Другое
  • url — URL-адрес проекта библиотеки, который может посетить человек. Например, страница библиотеки на GitHub. Это используется для ссылок «Дополнительная информация» в диспетчере библиотек
  • архитектур — (по умолчанию
    *
    ) разделенный запятыми список архитектур, поддерживаемых библиотекой. Если библиотека не содержит кода, специфичного для архитектуры, используйте * для соответствия всем архитектурам. Это поле используется как один фактор в определение приоритета, когда несколько библиотек соответствуют директиве #include , и предоставление предупреждающего сообщения, когда библиотека скомпилирована для платы с архитектурой, не соответствующей ни одной из перечисленных.
  • зависит от (доступно в Arduino IDE 1.8.10/Arduino CLI 0.7.0) (необязательно) список разделенных запятыми зависимости (библиотеки, которые нужны для сборки текущей библиотеки). Менеджер библиотек Arduino IDE предложит установить зависимости во время установки библиотеки. arduino-cli lib install
    автоматически установит зависимости. С в имени библиотеки допускаются пробелы, но не запятые, вы можете ссылаться на библиотеки, содержащие пробелы в имя без двусмысленности, например:
    depend=Очень длинное имя библиотеки, Другая библиотека с длинным именем
    Ограничения версии для зависимости могут быть указаны в скобках после имени:
    depend=ArduinoHttpClient (>=1.0.0)
  • dot_a_linkage (доступно в Arduino IDE 1.6.0/arduino-builder 1.0.0-beta13) (необязательно), если установлено значение true , библиотека будет скомпилирована с использованием файла .a (архив). Во-первых, все исходные файлы компилируются в файлы .o как нормальный. Затем вместо включения всех .o файлы в команде компоновщика напрямую, все файлы .o сохраняются в файл .a, который затем включается в компоновщик команда. Требуется структура папок библиотеки формата 1.
    5.
  • включает (доступно в Arduino IDE 1.6.10) (необязательно) разделенный запятыми список файлов библиотеки, которые будут добавлено в скетч как #include <...> строк. Это свойство используется с командой «Включить библиотеку» в Arduino. ИДЕ. Если свойство включает отсутствует, включаются все файлы заголовков (.h) в корневой исходной папке.
  • предварительно скомпилированный (доступен в Arduino IDE 1.8.6/arduino-builder 1.4.0) (необязательно) включает поддержку .a (архив) и .so (общий объект). См. раздел «Предварительно скомпилированные двоичные файлы». документация о необходимом месте в библиотеке для этих файлов. Статическая библиотека должна быть подключена как ldflag. Предварительно скомпилированное поле
    имеет два поддерживаемых значения, которые управляют тем, как любые исходные файлы в библиотеке handled:
    • true — Исходные файлы всегда компилируются. Это полезно для «смешанных» библиотек, таких как те, которые содержат как открытые исходный код и предварительно скомпилированный двоичный код компонента с закрытым исходным кодом. Поддержка «смешанных» библиотек была непреднамеренно потеряно в Arduino IDE 1.8.12/arduino-builder 1.5.2/Arduino CLI 0.8.0 и возвращено в Arduino IDE 1.8.13/arduino-builder 1.5.3/Arduino CLI 0.11.0.
    • полный — (доступен в Arduino IDE 1.8.13/arduino-builder 1.5.3/Arduino CLI 0.11.0) Если библиотека предоставляет предварительно скомпилированная библиотека для платы, для которой компилируется, исходные файлы компилироваться не будут. Если нет предварительно скомпилированного для выбранной платы была предоставлена ​​библиотека, исходные файлы скомпилированы как запасной вариант. Это полезно для предварительная компиляция библиотеки для сокращения времени компиляции для конкретного целевого оборудования, а также поддержка произвольные платы путем компиляции библиотеки по требованию.
  • ldflags (доступно в Arduino IDE 1.8.6/arduino-builder 1.4.0) (необязательно) добавляются флаги компоновщика. Пример: ldflags=-lm

Пример:

 имя=Веб-сервер
версия=1.0.0
автор=Кристиан Магли , Пиппо Плутон 
сопровождающий = Кристиан Магли 
предложение = библиотека, которая упрощает кодирование веб-сервера.
параграф = поддерживает HTTP1.1, и вы можете выполнять GET и POST.
категория=Связь
URL-адрес = http://example.com/
архитектуры = авр
включает = WebServer.h
зависит=ArduinoHttpClient
 
Ограничения версии

(доступен в Arduino IDE 2.0.0-beta.3/Arduino CLI 0.7.0)

По умолчанию последняя версия зависимости, указанная в поле depend library.properties устанавливается вместе с библиотекой. Указание точной версии или диапазон версий также поддерживается.

Доступны следующие операторы:

= равно
> больше
>= больше или равно
< меньше
<= меньше или равно
! НЕ 1
&& И
|| ИЛИ
(, ) группа ограничений

1 Доступен в Arduino IDE 2.0.0-rc7/Arduino CLI 0.22.0

Примеры

Если библиотека "ArduinoHttpClient" имеет следующие выпуски:

  • 0.1.0
  • 1.0.0
  • 2.0.0
  • 2.1.0

Его версия, установленная как зависимость, будет следующей:

зависит от значения поля Устанавливает
версии
ArduinoHttpClient 2. 1.0
ArduinoHttpClient (= 1.0.0) 1.0.0
ArduinoHttpClient (> 1.0.0) 2.1.0
ArduinoHttpClient (>=1.0.0) 2.1.0
ArduinoHttpClient (<2.0.0) 1.0.0
ArduinoHttpClient (<=2.0.0) 2.0.0
ArduinoHttpClient (!=1.0.0) 2.1.0
ArduinoHttpClient (>1.0.0 && <2.1.0) 2.0.0
ArduinoHttpClient (<1.0.0 || >2.0.0) 2.1.0
ArduinoHttpClient ((>0.1.0 && <2.0.0) || >2.1.0) 1.0.0

Расположение папок и файлов

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

Корневая папка библиотеки

Имя корневой папки библиотеки должно начинаться с основной буквы (A-Z или a-z) или цифры (0-9), за которой следуют основные буквы, цифры, знаки подчеркивания (_), точки (.) и тире (-). Максимальная длина 63 символа.

Исходный код

Для библиотек, предназначенных для использования только с Arduino IDE 1.5.x+, исходный код находится в папке src . Для пример:

 Серво/src/Servo.h
Серво/src/Servo.cpp
 

Исходный код найден в 9Папка 0005 src и все ее подпапки скомпилированы и связаны в эскизе пользователя. Только Папка src добавлена ​​в путь поиска include (как при компиляции скетча, так и библиотеки). Когда пользователь импортирует библиотеку в свой скетч (из меню «Sketch > Include Library» Arduino IDE или в веб-редакторе Arduino). кнопка «Включить»), поведение по умолчанию (настраивается через library. properties включает поле ) для #include заявление, которое будет добавлено для все файлы заголовков (.h) в каталоге src/ (но не его подпапки). В результате эти заголовочные файлы образуют нечто вроде фактический интерфейс к вашей библиотеке; в общем, единственными заголовочными файлами в корневой папке src/ должны быть те, которые вы хотите выставить эскиз пользователя и планируете поддерживать совместимость с будущими версиями библиотеки. Место внутренние файлы заголовков в подпапке папки src/.

Для обратной совместимости с Arduino IDE 1.0.x автор библиотеки может поместить исходный код в корневую папку, вместо папки под названием источник . В этом случае применяется формат библиотеки 1.0 и выполняется поиск исходного кода. из корневой папки библиотеки и папки утилиты , например:

 Сервопривод/Сервопривод.h
Серво/Серво.cpp
Серво/утилита/ServoTimers.h
Серво/утилита/ServoTimers.cpp
 

Это позволит компилировать существующие библиотеки формата 1. 0 под Arduino IDE 1.5.x+ и наоборот. Если библиотека нужно только запустить на Arduino IDE 1.5.x+, мы рекомендуем размещать весь исходный код в папке src/. Если библиотека требует рекурсивной компиляции вложенных исходных папок, ее код должен находиться в папке src/ (поскольку в Arduino IDE 1.0.x нет поддерживают рекурсивную компиляцию, обратная совместимость в любом случае невозможна).

Макет библиотеки

Макет корень скомпилирован источник скомпилировано утилита скомпилированная
рекурсивный нет рекурсивно нет
плоский да нет да
Предварительно скомпилированные двоичные файлы

предварительно скомпилированное поле в library.properties включает поддержку использования предварительно скомпилированные библиотеки. Для этого необходимо предоставить файлы .a (архив) или .so (общий объект), которые скомпилированы для конкретная архитектура процессора. Целевая архитектура файлов указывается именами папок.

Двоичные файлы должны располагаться по адресу src/{build.mcu} , где {build.mcu} — это имя архитектуры целевого файла. был составлен для. Пример: cortex-m3 для Arduino Due.

Имена файлов скомпилированных двоичных файлов должны начинаться с lib (например, libFoo.a ).

(доступен в Arduino IDE 1.8.12/arduino-builder 1.5.2/Arduino CLI 0.8.0) Конфигурация ABI с плавающей запятой Микроконтроллеры ядра ARM можно настроить с помощью флагов компилятора. Дополнительный уровень подпапки может использоваться для предоставления файлов скомпилировано для конкретной конфигурации с плавающей запятой: src/{build.mcu}/{build.fpu}-{build.float-abi} , где {build.fpu} — это значение флага компилятора -mfpu , а {build. float-abi} — это значение -mfloat-abi . флаг компилятора. (доступен в Arduino IDE 1.8.13/arduino-builder 1.5.3/Arduino CLI 0.11.0) Если с плавающей запятой флаги конфигурации используются, но папка, соответствующая этой конфигурации, не найдена, src/{build.mcu} используется как отступать.

Ниже приведен пример структуры папок библиотеки src , которая обеспечивает:

  • Заголовочный файл, содержащий объявления для API библиотеки.
  • Исходный файл для использования в качестве запасного варианта для других архитектур (предварительно скомпилированный = полный режим ).
  • Архивный файл для архитектуры ARM Cortex M0+ плат Arduino SAMD.
  • Архивный файл для архитектуры ARM Cortex M4 Arduino Nano 33 BLE в качестве запасного варианта для обратной совместимости. с программным обеспечением для разработки Arduino до того, как была добавлена ​​​​поддержка конфигурации с плавающей запятой.
  • Архивный файл для архитектуры ARM Cortex M4 Arduino Nano 33 BLE, скомпилированный для -mfloat-abi=softfp -mfpu=fpv4-sp-d16 Конфигурация ABI с плавающей запятой.
 Сервопривод/src/Servo.h
Серво/src/Servo.cpp
Сервопривод/src/cortex-m0plus/libServo.a
Серво/src/cortex-m4/libServo.a
Сервопривод/src/cortex-m4/fpv4-sp-d16-softfp/libServo.a
 
Примеры библиотек

Примеры библиотеки должны быть помещены в папку examples . Обратите внимание, что примеров имя папки должно быть написано именно так (со строчными буквами).

 Серво/примеры/...
 

Скетчи, содержащиеся в папке примеров, будут отображаться в меню «Примеры» Arduino IDE и Arduino Web. Редактор.

Дополнительная информация:

  • Спецификация эскиза Arduino
  • Руководство по стилю для примеров Arduino

Папка extras может использоваться разработчиком для размещения документации или других элементов, которые будут включены в библиотеку. Помните, что файлы, помещенные в эту папку, увеличат размер библиотеки, поэтому размещение PDF-файла размером 20 МБ в библиотеке что весит несколько килобайт, может быть не такой уж хорошей идеей.

Содержимое папки extras полностью игнорируется программой разработки Arduino; вы можете положить что угодно внутри.

Ключевые слова

Список ключевых слов для библиотеки может быть указан в файле с именем keywords.txt, расположенном в корне библиотеки папка. Когда ключевое слово любой установленной библиотеки используется в скетче, Arduino IDE окрашивает его.

 Сервопривод/keywords.txt
 

Пример файла keywords.txt:

 # Карта раскраски синтаксиса для ExampleLibrary
# Типы данных (KEYWORD1)
Тест KEYWORD1
# Методы и функции (KEYWORD2)
KEYWORD2
# Экземпляры (KEYWORD2)
# Константы (LITERAL1)
 

Этот файл заставит Arduino IDE выделить Test в качестве типа данных и doSomething в качестве метода/функции.

формат ключевых слов.txt

keywords.txt состоит из четырех полей, разделенных одной истинной табуляцией (не пробелами):

 KEYWORD KEYWORD_TOKENTYPE REFERENCE_LINK RSYNTAXTEXTAREA_TOKENTYPE
 

Разрешается оставлять поле пустым.

KEYWORD_TOKENTYPE
KEYWORD_TOKENTYPE Использовать для Свойство темы
КЛЮЧЕВОЕ СЛОВО1 типов данных редактор.data_type.style
КЛЮЧЕВОЕ СЛОВО2 функций редактор.функция.стиль
КЛЮЧЕВОЕ СЛОВО3 структур редактор.функция.стиль
ЛИТЕРАЛ1 констант editor.reserved_word_2.style
БУКВАЛЬНЫЙ2 ? редактор. функция.стиль
REFERENCE_LINK

В этом поле указывается страница справки по языку Arduino, которую следует открыть через Arduino. Щелкните правой кнопкой мыши IDE > Найти в справочнике или Справка > Найти в справочнике , когда курсор находится на этом ключевом слове. В целом нет смысла определять REFERENCE_LINK для ключевых слов сторонних библиотек, поскольку они вряд ли быть в справочнике по языку Arduino.

RSYNTAXTEXTAREA_TOKENTYPE

В Arduino IDE 1.6.5 и новее это поле переопределяет KEYWORD_TOKENTYPE . В предыдущих версиях IDE Поле RSYNTAXTEXTAREA_TOKENTYPE игнорируется и вместо него используется KEYWORD_TOKENTYPE .

RSYNTAXTEXTAREA_TOKENTYPE Свойство темы KEYWORD_TOKENTYPE эквивалент
RESERVED_WORD editor. reserved_word.style КЛЮЧЕВОЕ СЛОВО3
RESERVED_WORD_2 editor.reserved_word_2.style БУКВАЛЬНЫЙ1
ТИП_ДАННЫХ редактор.data_type.style КЛЮЧЕВОЕ СЛОВО1
ПРЕПРОЦЕССОР редактор.препроцессор.стиль КЛЮЧЕВОЕ СЛОВО3
LITERAL_BOOLEAN редактор.literal_boolean.style БУКВАЛЬНЫЙ1

Файл флага разработки

Обычно Arduino IDE обрабатывает содержимое папки библиотеки как доступное только для чтения. Это сделано для того, чтобы пользователи не случайное изменение эскизов примеров. В процессе разработки библиотеки вы можете захотеть отредактировать примеры скетчей в место с помощью Arduino IDE. В Arduino IDE 1.6.6 и новее поведение только для чтения можно отключить, добавив файл с именем .development в корень папки библиотеки. Файл library.properties должен также присутствовать. Индексатор Менеджера библиотек будет не собирайте выпуски, содержащие файл .development, поэтому не отправляйте этот файл в удаленный репозиторий.

Полный пример

Гипотетическая библиотека с именем "Servo", соответствующая спецификации, приведена ниже:

 Серво/
Сервопривод/библиотека.свойства
Серво/ключевые слова.txt
Серво/источник/
Серво/src/Servo.h
Серво/src/Servo.cpp
Серво/src/ServoTimers.h
Серво/примеры/
Серво/примеры/Sweep/Sweep.ino
Серво/примеры/Pot/Pot.ino
Серво/доп./
Сервопривод/дополнения/Servo_Connectors.pdf
 

Работа с несколькими архитектурами

Библиотеки, помещенные в подпапку библиотек папки Sketchbook (также известная как «каталог пользователя»), будут доступны для все платы, которые могут включать в себя несколько различных процессорных архитектур. Чтобы предоставить код для конкретной архитектуры или оптимизаций, авторы библиотек могут использовать ARDUINO_ARCH_XXX макрос препроцессора ( #define ), где XXX — имя архитектуру (определяемую названием папка архитектуры платформы платы). Например, ARDUINO_ARCH_AVR будет определено при компиляции для плат на базе AVR.

Пример:

 #если определено (ARDUINO_ARCH_AVR)
  // код, специфичный для AVR
#elif определено (ARDUINO_ARCH_SAM)
  // код, специфичный для SAM
#еще
  // общий код, не зависящий от платформы
#endif
 

В качестве альтернативы, если библиотека работает только на определенных архитектурах, вы можете предоставить явное сообщение об ошибке (вместо допуская сбой компиляции трудным для понимания способом):

 #если определено (ARDUINO_ARCH_AVR)
 // код, специфичный для AVR
#elif определено (ARDUINO_ARCH_SAM)
 // код, специфичный для SAM
#еще
 #error «Эта библиотека поддерживает только платы с процессором AVR или SAM».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *