Софт-Портал

ардуино библиотеки скачать

Рейтинг: 4.6/5.0 (1006 проголосовавших)

Категория: Windows

Описание

Arduino: Библиотека LiquidCrystal

Библиотека LiquidCrystal

Вкратце, чтобы самому не забыть.

Втываем дисплей своими 16 ножками в макетную плату. Подводим к рельсам питания макетки питание +5 В и землю с Arduino.

Фоновая подсветка дисплея — это отдельный контур, не связанный с остальным. Включить её можно подав +5 В на 15-й контакт дисплея и подключив 16-й контакт к земле. Соединив эти два контакта с соответствующими рельсами, можно включить Arduino и увидеть, что дисплей засветился.

Далее необходимо подключить цепь, отвечающую за отображение символов. Для этого предназначены контакты 1, 2 и 3 на дисплее. Перед подключением отключите Arduino от питания.

Первый — это земля. Соедините его с рельсой земли.

Второй — питание. Соедините его с рельсой +5 В.

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

После подключения, если включить Arduino, вы можете увидеть прямоугольные знакоместа. В зависимости от комбинации цветов текста и подсветки они могут быть как яркими и хорошо заметными, так и едва заметными. Это нормально: в любом случае, текст будет смотреться отлично.

Подключение шины данных

Для коммуникации между Arduino и экраном необходимо использовать несколько линий взаимодействия:

2 или 3 для командования дисплеем

4 или 8 для передачи данных (кодов символов и команд)

Таким образом занятыми окажутся от 6-ти до 11-ти контактов от обоих устройств. Если вам не требуется считывать с дисплея, что подходит под большинство сценариев использования, для команд понадобится 2 линии.

Если скорость обновления данных так же не является проблемой, для передачи данных достаточно 4-х линий.

Итак, для подключения дисплея достаточно использовать 6 линий, 6 контактов на Arduino. Рассмотрим именно этот сценарий. Как упоминалось, нам не за чем считывать с дисплея, мы будем в него только писать. Поэтому соединим 5-й контакт дисплея, который отвечает за выбор чтение/запись с рельсой земли. Это означает «всегда писать».

Затем, соединяем Arduino и экран нашими 6-ю линиями коммуникации. Какие именно контакты будут выбраны на Arduino не имеет значения: мы зададим их в программе, но для примера была выбрана такая конфигурация:

4-й контакт дисплея — 4-й контакт Arduino. Это линия адресного сигнала. Известная как A0 или RS. В зависимости от того, 0 она или 1, дисплей понимает имеем ли мы на линии данных команду вроде «передвинуть курсор» или код символа для отображения.

6-й контакт дисплея — 5-й контакт Arduino. Это линия разрешения доступа к данным. Известная, как E или Enable. Когда эта линия становится единицей, дисплей исполняет команду или выводит символ с линии данных.

11-й, 12-й, 13-й, 14-й контакт дисплея — 10-й, 11-й, 12-й, 13-й контакт Arduino соответственно. Это линии данных. Известные как DB4, DB5, DB6, DB7.

Программирование

Сначала покажу, как подключить встроенную библиотеку Liquid Crystal в скетч. В Arduino IDE выбираем меню Sketch | Import Library | LiquidCrystal. В начало скетча будет вставлена строка.

Это удобно, если вы позабыли правильное написание библиотеки и убережёт от опечаток.

Простейшая программа для вывода "Hello World"

В данном случае функция loop() нам не требуется, поэтому оставляем её пустой. Но можем её и задействовать. Уберите код, который печатает строку "Hello Kitty" во втором ряду экрана и дополним код.

Считываем с последовательного порта Кириллица

Не все дисплеи имеют кириллицу. Дисплей от Мэлт поддерживает русский язык. Но просто напечатать текст на русском не получится. Так например, букве «Я» соответствует код B1 в шестнадцатиричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности \x## встроить в строку код символа:

Можете смешивать в одной строке обычные символы и явные коды как угодно. Единственный нюанс в том, что после того, как компилятор в строке видит последовательность \x, он считывает за ним все символы, которые могут являться разрядами шестнадцатиричной системы даже если их больше двух. Из-за этого вы не можете просто использовать символы из диапазона 0-9, a-f следом за двузначным кодом символа: это вызовет ошибку компиляции. Чтобы обойти этот момент, можно использовать тот факт, что две строки записанные рядом склеиваются. Так, если вы хотите написать «Яeee»:

Полную таблицу символов с кодами можно найти в документации к экрану .

Я на скорую руку написал скрипт на JavaScript, который конвертирует слова в нижнем регистре в нужные последовательности. Если в слове встречаются повторяющие буквы, то нажмите на кнопку несколько раз.

Освоив первый урок, можете перейти к изучению других. В Arduino IDE откройте меню File | Examples | LiquidCrystal и выбирайте любой пример. Единственно, что вам нужно сделать - это менять строчку инициализации контактов в соответствии с вашими соединениями.

Библиотека LiquidCrystalRus с поддержкой кириллицы

Совсем не обязательно мучаться с байтами, чтобы вывести русский симмвол. Существует библиотека LiquidCrystalRus. которая поддерживает кириллицу. Исходники лежат на Гитхабе. Скачайте файл LiquidCrystalRus-1.6.0.zip и распакуйте его в папку libraries. У вас получится что-то типа D:\Arduino\libraries\LiquidCrystalRus. В папке находятся файлы библиотеки и папка examples. содержащая три скетча. После этого примеры будут доступны из Arduino IDE. Запустите пример File | Examples | LiquidCrystalRus | HelloWorldRus и убедитесь, что экран способен выводить русские символы.

Функции библиотеки LiquidCrystal autoscroll()

Функция autoscroll() включает автоматическую прокрутку экрана жидкокристаллического индикатора и заставляет каждый вывод символа на экран индикатора перемещать предыдущие символы на одно знакоместо. Если текущее направление вывода символов слева направо (значение по умолчанию) — экран индикатора прокручивается влево; если текущее направление вывода символов справа налево — экран индикатора прокручивается вправо. Это производит эффект вывода каждого нового символа в одно и то же знакоместо на экране жидкокристаллического индикатора.

  • lcd — переменная типа LiquidCrystal
begin()

Функция begin() определяет размерность (количество символов в ширину и высоту) индикатора.

  • lcd — переменная типа LiquidCrystal
  • cols — количество символов в строке
  • rows — количество строк
blink()

Функция blink() выводит на экран жидкокристаллического индикатора мигающий курсор. Если она используется в комбинации с функцией cursor(). результат будет зависеть от конкретного индикатора.

  • lcd — переменная типа LiquidCrystal
clear()

Функция clear() очищает экран жидкокристаллического индикатора и располагает курсор в верхнем левом углу.

  • lcd — переменная типа LiquidCrystal
createChar()

Функция createChar() создаёт пользовательский символ (глиф) для использования на жидкокристаллическом дисплее. Поддерживаются до восьми символов 5?8 пикселов (нумерация с 0 до 7). Создание каждого пользовательского символа определяется массивом из восьми байтов — один байт для каждой строки. Пять младших значащих битов каждого байта определяют пикселы в этой строке. Чтобы вывести пользовательский символ на экран, используйте функцию write() с номером символа в качестве параметра.

  • lcd — переменная типа LiquidCrystal
  • num — номер создаваемого символа (0 to 7)
  • data — данные символьных пикселов
cursor()

Функция cursor() выводит на экран жидкокристаллического индикатора курсор — подчеркивание знакоместа в позиции, в которую будет записан следующий символ.

  • lcd — переменная типа LiquidCrystal
display()

Функция display() включает жидкокристаллический индикатор после того, как он был выключен функцией noDisplay(). Эта функция восстанавливает текст (и курсор), который был на дисплее.

  • lcd — переменная типа LiquidCrystal
home()

Функция home() располагает курсор в верхнем левом углу жидкокристаллического индикатора. Используется для определения начального положения при выводе последовательного текста на экран индикатора. Чтобы ещё и очистить экран индикатора, используйте вместо этой функции функцию clear().

  • lcd — переменная типа LiquidCrystal
leftToRight()

Функция leftToRight() устанавливает направление вывода символов на экран жидкокристаллического индикатора слева направо (значение по умолчанию). Это означает, что последующие символы, выводимые на экран индикатора, пойдут слева направо, но не повлияют на выведенный ранее текст.

  • lcd — переменная типа LiquidCrystal
LiquidCrystal()

Функция LiquidCrystal() создает переменную типа LiquidCrystal. Индикатором можно управлять, используя 4 или 8 линий данных. Для подключения по 4-м линиям пропустите контакты от D0 до D3 и оставьте эти линии неподключенными. Контакт RW может быть соединен с "землей" вместо соединения с контактом платы Arduino. Если в вашей схеме так — пропустите этот параметр функции.

  • rs — номер контакта платы Arduino, который соединяется с контактом RS жидкокристаллического индикатора
  • rw — номер контакта платы Arduino, который соединяется с контактом RW жидкокристаллического индикатора (опционально)
  • enable — номер контакта платы Arduino, который соединяется с контактом ENABLE жидкокристаллического индикатора
  • d0, d1, d2, d3, d4, d5, d6, d7 — номера контактов платы Arduino, которые соединяются соответственно с контактами данных жидкокристаллического инди-катора. D0, D1, D2 И D3 опциональны — если они не задействованы, жидкокристаллический индикатор будет управляться только через 4 линии данных (D4, D5, D6, D7)
noAutoscroll()

Функция noAutoscroll() выключает автоматическую прокрутку экрана жидкокристаллического индикатора.

  • lcd — переменная типа LiquidCrystal
noBlink()

Функция noBlink() выключает мигающий курсор на экране жидкокристаллического индикатора.

  • lcd — переменная типа LiquidCrystal
noCursor()

Функция noCursor() скрывает курсор с экрана жидкокристаллического индикатора.

  • lcd — переменная типа LiquidCrystal
noDisplay()

Функция noDisplay() выключает жидкокристаллический индикатор без потери отображаемой на нем информации.

  • lcd — переменная типа LiquidCrystal
print()

Функция print() печатает текст на жидкокристаллическом индикаторе.

  • lcd — переменная типа LiquidCrystal
  • data — данные для печати (тип char, byte, int, long или string)
  • BASE (опционально) — основание, по которому печатаются числа: BIN для двоичных (основание 2), DEC для десятичных (основание 10), OCT для восьмеричных (основание 8), HEX для шестнадцатеричных (основание 16)
rightToLeft()

Функция rightToLeft() устанавливает направление вывода символов на экран жидкокристаллического индикатора справа налево (значение по умолчанию — слева направо). Это означает, что последующие символы, выводимые на экран индикатора, пойдут справа налево, но не повлияют на выведенный ранее текст.

  • lcd — переменная типа LiquidCrystal
scrollDisplayLeft()

Функция scrollDisplayLeft() прокручивает информацию на экране индикатора (текст и курсор) на одно знакоместо влево.

  • lcd — переменная типа LiquidCrystal
scrollDisplayRight()

Функция scrollDisplayRight() прокручивает информацию на экране индикатора (текст и курсор) на одно знакоместо вправо.

  • lcd — переменная типа LiquidCrystal
setCursor()

Функция setCursor() позиционирует курсор жидкокристаллического индикатора, т.е. устанавливает положение, в котором на его экран будет выведен последующий текст.

  • lcd — переменная типа LiquidCrystal
  • col — номер знакоместа в ряду (начиная с 0 для первого знакоместа)
  • row — номер ряда (начиная с 0 для первого ряда)
write()

Функция write() записывает символ в жидкокристаллический индикатор.

  • lcd — переменная типа LiquidCrystal
  • data — символ, записываемый в индикатор
Собственные символы

Собственные символы рисуются с помощью функции createChar(). Пример, предлагаемый на сайте Arduino:

Вы можете нарисовать несколько собственных символов и вывести их на экран.

Визуальный редактор

Редактор для создания собственных символов для дисплеев HD44780

Щёлкайте по квадратам для генерации кода.

Знакоместо

ардуино библиотеки скачать:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Написание библиотеки для Arduino

    Написание библиотеки для Arduino

    Данный документ описывает создание библиотеки для Arduino. Объяснение начнется с написания скетча передачи кода Морзе посредством светодиода. Затем будет показано как конвертировать скетч в библиотеку. Это позволит другим пользователям легко использовать созданный код, обновлять и дополнять его.

    Скетч, воспроизводящий код Морзе:

    Данный скетч посредством мигания светодиода на выводе 13 выдает сигнал SOS.

    Скетч содержит ряд частей кода, которые необходимо будет перенести в библиотеку. Во-первых, это функции dot() и dash(). которые управляют миганием светодиода. Во-вторых, это переменная ledPin, определяющая какой порт ввод/вывода использовать. И наконец, вызов функции pinMode(). устанавливающий режим вывода на используемом порту ввода/вывода.

    Процесс конвертации скетча в библиотеку.

    Библиотека содержит два файла: заголовочный файл (с расширением .h) и файлы реализации (с расширением .cpp). Заголовочный файл содержит характеристики библиотеки, т.е. список всего что содержится в ней. Создаваемый заголовочный файл будет называться Morse.h. Для дальнейшей работы с заголовочным файлом необходимо просмотреть содержание файла реализации.

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

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

    Также заголовочный файл содержит еще несколько дополнительных строк. Во-первых, это директива #include. которая дает доступ к стандартным типам и постоянным языка программирования Arduino (директива по умолчанию добавляется к каждому скетчу, но не к библиотеке). Директива выглядит следующим образом (и находится выше объявления класса):

    В версиях Arduino 1.0 и выше нужно еще добавить:

    Также принято заключать содержимое заголовочного файла в следующую конструкцию:

    Это предотвращает повторное подключение нашей библиотеки, если кто-то по ошибке дважды подключит библиотеку директивой #include .

    В начале кода библиотеки принято помещать комментарий о ее предназначении, авторе, дате и лицензии на библиотеку.

    Готовый заголовочный файл содержит:

    Рассмотрим файл реализации Morse.cpp.

    В начале кода находятся несколько директив #include. Данными директивами разрешается доступ к стандартным функциям Arduino и к характеристикам в головном файле библиотеки:

    Далее по коду находится конструктор. Он используется для создания экземпляра создаваемого класса. В данном случае пользователь задает номер используемого порта ввода/вывода через параметр. Порта устанавливается в режим вывода, а номер сохраняется в частной переменной для использования в других функциях:

    Код Morse:: означает, что функция принадлежит классу Morse. Нижний пробел в начале имени переменной _pin — принятое обозначение для частных переменных. Вообще, имя может быть любое, но согласно принятым конвенциям именования для частных переменных принято использовать префикс "_". Это также позволяет отличить от аргумента функции (в данном случае pin ).

    Далее код, который конвертируется в библиотеку из изначального скетча, добавилось только Morse:: и изменилось имя переменной с pin. на _pin :

    Общепринято помещать некоторые поясняющие комментарии в начале кода файла реализации. Полный код библиотеки:

    Использование библиотеки.

    Во-первых, необходимо создать папку Morse в подпапке libraries директории блокнота. Во-вторых, требуется скопировать файлы Morse.h и Morse.cpp в созданную папку. После запуска программы Arduino в меню Sketch > ImportLibrary будет находиться библиотека Morse. Библиотека будет компилироваться совместно со скетчами, использующими ее. Если при компиляции библиотеки возникли проблемы, то необходимо проверить, чтобы ее файлы были с расширениями .cpp и .h (не должно быть никаких дополнительных расширений .pde и .txt).

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

    Несколько отличий от изначального скетча:

    Во-первых, добавлена директивы #include в начало скетча. Таким образом определяется доступность библиотеки Morse и ее подключение. Неиспользуемую библиотеку можно удалить, убрав директиву #include.

    Во-вторых, создается экземпляр класса Morse, называемый morse :

    При выполнении данной строки (перед выполнением функции setup() ) вызывается конструктор для класса Morse и принимает аргумент, данный в примере (13).

    При этом функция setup() ничего не содержит, т.к. вызов функции pinMode() произошел внутри библиотеки (когда был создан экземпляр класса).

    В-третьих, для вызова функций dot() и dash() необходимо прибавить префикс morse. – имя используемого экземпляра. Может быть несколько экземпляров класса Morse, каждый со своим номером порта, хранящимся в локальной переменной _pin. Вызовом функции конкретного экземпляра определяются какие переменные, используются во время вызова. При наличии следующих двух строк:

    внутри вызова morse2.dot(). переменная _pin будет иметь значение 12.

    К сожалению автоматическая подсветка кода не работает с подключаемыми библиотеками. Для того чтобы подсветка заработала необходимо создать файл с названием keywords.txt. Пример:

    Напротив каждой строки через табуляцию стоит зарезервированное слово, и опять через табуляцию тип слова. Классы соответствуют зарезервированному слову KEYWORD1 и окрашены в оранжевый цвет; функции – KEYWORD2 и окрашены в коричневый. Для распознавания слов необходимо перезапустить среду разработки Arduino.

    Созданную библиотеку желательно всегда сопровождают примером ее применения. Для этого создается папка examples в директории Morse. Затем копируется созданный ранее скетч SOS в данную папку. (Файл скетча можно найти через меню Sketch > ShowSketchFolder ). После перезапуска Arduino в меню File > Sketchbook > Examples будет находиться пункт Library-Morse, содержащий пример. Также необходимо добавить комментарии о том, как лучше использовать библиотеку.

    Подключаем к Arduino VGA-монитор с помощью библиотеки DueVGA - Проекты на Arduino - ARDUINO - Каталог схем

    С помощью этой VGA-библиотеки можно генерировать VGA или NTSC / PAL-композитный видеосигнал на Arduino Due или подобной ему сборке. Поддерживаемые разрешения до 320x240 в 8-битном цвете и 800x600 в монохромном режиме. Схема очень проста и содержит всего 3 резистора для монохромного режима и 10 резисторов для полноцветного. Библиотека имеет основные функции для рисования графики: точки, линии, треугольники, круги, прямоугольники.

    Библиотека содержит классы для вывода текста на экран в VGA -режиме: print(. ) и println(. ).

    Скачать библиотеку можно здесь – скачать DueVGA (3 Мб). Установка проста – скачиваем, распаковыем, скидываем папку " VGA ” в ваш каталог с библиотеками для Arduino .

    Сам сайт проекта расположен здесь - DueVGA.

    Схема подключения

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

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

    Смотрим, как все подключать:

    Вывод MOSI расположен на плате на 6-пиновом SPI -разъеме. Подключать к нему 100 Ом резистор нужно только в монохромном режиме. Точно так же, подключение к выводам 34-41 соответствующих резисторов нужно только в цветном режиме. Для монохромного режима надо подключить VGA -выходы через стоомный резистор так, как показано на этом рисунке:

    А вот чертеж цоколевки VGA-порта:

    Также, с помощью этой библиотеки можно подцепить Arduino и к NTSC или PAL телевизору по композитному кабелю. Для этого нам потребуется 6 резисторов и один электролитический конденсатор на 100 мкФ.

    Вот таблица номиналов резисторов:

    Тут, как и в VGA-режиме, желательно подобрать именно точные номиналы резисторов: используйте для этого омметр или последовательно соединение резисторов для точного подрбора номиналов.

    А вот схема подключения:

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

    И, в заключении, вот фот от автора библиотеки, которые демонстрируют ее работу наглядно:

    А вот товарищ с сайта Pole даже сделал порт консольной игрушки с помощью этой библиотеки.


    Источник. www.stimmer.github.io | Категория. Проекты на Arduino | Добавлен: 23.10.2013 | Автор. stimmer (перевод - RadioGID) | Просмотров. 3916

    Arduino: как создать свою библиотеку кода?

    На основе примера генератора кода Морзе здесь показано, как сконвертировать его функции в библиотеку (перевод официальной документации [1]). Это позволит другим людям проще использовать код, и проще обновить свой проект, когда Вы улучшите библиотеку. Начнем с простого примера скетча, который генерирует морзянку, мигая светодиодом (после его запуска он постоянно выдает сигнал SOS):

    В этом скетче есть несколько разных частей, которые нам нужно перевести в библиотеку. Первое, конечно же, это функции dot() и dash(), которые выполняют основную работу по миганию светодиодом. Второе это переменная ledPin, которая используется функциями - эта переменная определяет, какой вывод порта использовать. И наконец, здесь есть вызов pinMode(), который настраивает вывод порта как выход. Итак, давайте превратим код скетча в библиотеку.

    Для библиотеки нам нужно как минимум 2 файла: файл заголовка (header file, файл с расширением .h) и файл исходного кода (с расширением .cpp). В заголовочном файле есть определения для библиотеки: в основном здесь кратко описано все, что есть внутри библиотеки; файл исходного кода в то же время содержит действительный код. Назовем нашу библиотеку "Morse", так что заголовочный файл получит имя Morse.h.

    [Заголовочный файл библиотеки ]

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

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

    Примечание: определение класса в заголовке можно рассматривать как пользовательский ТИП (по аналогии с typedef struct), а экземпляр класса можно рассматривать как ПЕРЕМЕННУЮ, которая имеет этот тип. Конструктор предназначен для инициализации этой переменной. Может быть также еще и деструктор, который предназначен для уничтожения переменной класса. Наличие и конструктора, и деструктора необязательно: это зависит от реализации класса.

    Кроме определения класса, в заголовочный файл нужно добавить подключение заголовка Arduino.h директивой #include. Это дает доступ к стандартным типам и константам языка Arduino. Заголовочный файл Arduino.h автоматически добавляется при компиляции скетча (см. [3]), но для библиотек это нужно сделать самому. Подключение заголовка Arduino.h будет выглядеть следующим образом:

    В завершение нужно обернуть заголовочный файл в стандартную конструкцию #ifndef / #define / #endif (это защита от повторного включения заголовка []). Также в начало заголовка добавляют комментарии, описывающие содержимое библиотеки. В результате получится вот такой заголовок:

    [Файл исходного кода библиотеки ]

    Займемся конструктором. В нем расположен код, который вызывается при создании экземпляра класса. В нашем примере пользователь в параметре конструктора указывает номер цифрового порта, который будет использоваться. Таким образом, конструктор у нас будет конфигурировать ножку порта, и сохранит номер используемого порта в частную переменную _pin (эта переменная будет использоваться функциями класса):

    В коде конструктора видно кое-что, с чем мы раньше не встречались. Первое это необычный префикс Morse. перед именем функции. Это говорит о том, что функция входит в состав класса Morse. Тот же самый префикс мы увидим позже в определении других функций класса. Второе это private-переменная _pin. В принципе имя этой переменной может быть любым, лишь бы оно соответствовало определению класса в файле заголовка. Добавление символа подчеркивания к имени файла является стандартным соглашением - чтобы сразу было видно, что это частная (private) переменная, и чтобы получить отдельное имя, отличающееся от имени входной переменной функции конструктора.

    Теперь напишем код для функций библиотеки. Код будет выглядеть точно таким же, как он был в скетче, за исключением того, что к имени функции будет добавлен префикс Morse. и будет использоваться частная переменная _pin вместо глобальной переменной pin. Нужно также добавить подключение заголовочных файлов и текст комментария в начало файла. В результате получится файл исходного кода (модуль) библиотеки:

    [Как использовать библиотеку ]

    Файлы библиотеки готовы. Теперь надо разобраться, как использовать библиотеку в среде разработки Arduino.

    Сначала создайте папку Morse как поддиректорию в папке libraries (папка libraries находится в каталоге установки системы Arduino, полный путь до папки Morse будет наподобие C:\Program Files\Arduino\libraries\Morse). Скопируйте файлы Morse.h и Morse.cpp в директорию Morse. После этого запустите среду разработки Arduino IDE. Если Вы зайдете в меню Sketch -> Import Library (Скетч -> Импортировать библиотеку), то среди списка библиотек Вы должны увидеть Morse. Библиотека будет компилироваться вместе с теми скетчами, которые её используют. Если у Вас имеются проблемы при создании или компиляции библиотеки, то проверьте, что файлы действительно имеют расширения .cpp и .h - например, без дополнительного расширения .pde или .txt (имейте в виду, что подобная ситуация может произойти, когда в Проводнике Windows отключено отображение расширений зарегистрированных типов файлов).

    Теперь давайте посмотрим, как можно создать скетч, который будет делать то же самое, что и раньше, но с использованием библиотеки:

    Очевидно, что есть несколько различий от старого скетча (основанные на том, что некоторая часть кода перемесилась в библиотеку). Кроме того, код значительно сократился, и стал читабельнее. Давайте рассмотрим эти отличия.

    Директива #include. Первое отличие - добавлен оператор #include в самом начале скетча. Это делает библиотеку Morse доступной для использования внутри скетча, и её код (при компиляции) будет добавлен в общий код, который будет впоследствии прошит в память микроконтроллера платы Arduino. Это означает, что если больше в скетче не нужна библиотека, то Вы должны удалить подключение её заголовочный файла (закомментировать или удалить строку с соответствующей директивой #include).

    Обратите внимание, что имя подключаемого файла теперь указано в угловых скобках, а не в двойных кавычках. Это обычная практика программирования на языках C/C++: имена стандартных библиотечных файлов в директиве #include указываются с использованием угловых скобок, а подключение заголовочных файлов пользователя указывается с помощью двойных кавычек.

    Вызов конструктора класса. Второе отличие - как создается переменная класса Morse (в нашем примере мы создаем переменную класса morse):

    Когда выполняется эта строка кода (это происходит до вызова функции setup()), то будет вызвана функция конструктора класса Morse, и ей будет передан аргумент (в нашем случае номер цифрового порта 13).

    Обратите внимание, что функция setup() теперь пуста; это потому, что вызов pinMode() происходит внутри библиотеки (когда конструктор создает экземпляр переменной класса).

    Вызов функций класса. Последнее отличие - функции dot() и dash() вызываются с префиксом из имени экземпляра класса и точки (morse.). У нас может быть несколько экземпляров класса Morse, каждый из них будет использовать свой номер порта. Путем вызова функции с отдельным экземпляром класса, мы указываем, какие экземпляры переменных используются для вызова функции. К примеру, если у нас есть два экземпляра класса:

    то внутри вызова morse2.dot(), значение переменной _pin будет 12.

    [Подсветка синтаксиса библиотеки ]

    Если Вы попробуете использовать библиотеку в новом скетче, то не увидите, что наша библиотека не будет подсвечиваться особым образом в редакторе кода Arduino IDE, как это принято для стандартных библиотек (например, для общеизвестной библиотеки Serial). К сожалению, программное обеспечение среды разработки Arduino не может автоматически распознать определения в Вашей библиотеке (что было бы приятной возможностью), так что Вам нужно ей немного в этом помочь. Чтобы настроить подсветку синтаксиса для Вашей библиотеки, создайте файл keywords.txt в каталоге Morse. Его содержимое должно выглядеть так:

    В каждой строке должно быть имя ключевого слова, за которым через табуляцию (не через пробелы) должен идти тип ключевого слова. Имя класса должно быть обозначено как KEYWORD1, и это дает оранжевую подкраску; функции (методы) класса должны обозначены как KEYWORD2, и имена функций будут коричневыми. После создания файла keywords.txt в каталоге Morse нужно перезапустить среду разработки Arduino, чтобы она распознала новые ключевые слова.

    [Пример кода использования библиотеки ]

    Вместе с библиотекой полезно предоставить пример скетча с демонстрацией использования библиотеки. Для этого в директории Morse создайте подкаталог examples. Затем скопируйте или переместите папку, содержащую код скетча (пусть эта папка называется SOS), в папку examples. Где находится копируемый скетч можно узнать из меню Sketch -> Show Sketch Folder (Скетч -> Показать папку скетчей). Если после этого Вы еще раз перезапустите среду разработки Arduino, то в меню File -> Sketchbook -> Examples (Файл -> Примеры) увидите Morse, и внутри неё пример SOS. Также для кода примера можно создать дополнительные комментарии, чтобы лучше разъяснить, как использовать Вашу библиотеку.

    Если Вы хотите проверить содержимое готовой библиотеки, то можете загрузить её: Morse.zip [3]. Вы также можете просмотреть реализации других готовых библиотек, которые можете найти в папке libraries каталога установки Arduino. Дополнительную информацию по Arduino-стилю оформления библиотек можете получить из [2]. Если у Вас есть вопросы, то можете задать их на форуме разработчиков Arduino [4].

    1. Writing a Library for Arduino site:arduino.cc .
    2. Arduino Style Guide for Writing Libraries site:arduino.cc .
    3. Morse.zip - архив копии каталога библиотеки, содержимое архива следует поместить в папку libraries каталога установки Arduino IDE.
    4. Arduino Forum > Software > Development site:forum.arduino.cc .

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

    Программирование Arduino - создание своей библиотеки

    Программирование Arduino - создание своей библиотеки

    12. Cоздание своей библиотеки.

    На примере библиотеки для работы с PS/2-устройствами можно оценить как здорово работать через библиотеку :)
    Раз подключил и готово :)
    Разумеется, нужно ещё разобраться что к чему, но главное – библиотека – это очень удобно :) Поэтому, давайте научимся создавать собственную библиотеку для ардуино :)
    Как мы помним. ардуина программируется на C++, поэтому, как Вы уже догадались, библиотека – это всего-навсего дополнительный класс, который инкапсулирует в себе функции для работы с устройством :)

    Т.о. для создания библиотеки нужно будет создать, как минимум, один .h файл в котором будет описываться Ваш класс/функции/ константы и один .cpp, в котором все эти функции реализуются :)

    Итак, создаём в библиотечной директории Arduino IDE (\hardware\libraries\) папку RoboCraft – так по-скромному будет называться наша библиотека :)

    Для Arduino IDE 0017 свои библиотеки можно хранить в директории libraries, находящейся в каталоге с пользовательскими скетчами (путь указывается через File — Preferences, строчка Sketchbook location )

    А внутри нашей новой директории создаём наши файлы
    robocraft.h и robocraft.cpp
    Ну что – можно сказать половина дела сделана :)

    Библиотеки компилируется без дополнительных преобразований, поэтому их нужно писать на «чистом C++» и поэтому если внутри нашей библиотеки мы захотим использовать какие-нибудь функции или объекты из стандартной библиотеки Arduino, то нам нужно подключать соответствующий заголовочный файл («Arduino.h» (в старых версиях IDE: «WConstants.h», «WProgram.h»))

    На всякий случай, напишем:

    код оформляется в виде класса и если по смыслу выполняемых задач экземпляр этого класса может быть только один, то заодно происходит объявление этого экземпляра в .h файле.
    Помните, как в классе HardwareSerial – у нас один COM-порт и экземпляр класса там же и объявляется:

    Пора писать код :)

    Для начала, напишем что-нибудь простое, вроде обычного в таких случаях “Hello world”-а :)

    — robocraft.h —
    — robocraft.h end —. а теперь реализуем эти функции:

    — robocraft.cpp — — robocraft.cpp end — Остаётся перезапустить Arduino IDE и с удовольствием отметить появление нового класса (меню Sketch – Import Library ) :)

    При выборе нашего (да и любого другого) класса – всего лишь появляется строчка


    допишем необходимые setup и loop:

    Однако, заглянув в папку к любому другому классу в глаза бросаются файл keywords.txt и директория examples

    Попробуем разобраться.
    Файл keywords.txt содержит объявления ключевых слов вашей библиотеки, имена типов, методов, функций, констант – это нужно, чтобы редактор “раскрашивал” их соответствующими цветами. Синтаксис у файла простой — вот пример (разделитель — TAB):

    Сохраним этот keywords.txt в каталог с нашей библиотекой и перезапустим Arduino IDE

    — сравните с предыдущим скриншотом – название нашего класса и функция hello() теперь подсвечиваются. )

    Теперь остаётся добавить к нашей библиотеке нужных и полезных примеров использования.
    Для этого создаём директорию examples. а в ней поддиректории с примерами в формате .pde.
    Например, скопируем туда наш скетч в директорию hello_robocraft и переименуем его аналогично в hello_robocraft.pde
    В очередной раз перезапускаем Arduino IDE и видим, доступность нашего примера :)

    Замечательно! Заготовка для нашей робототехнической библиотеки создана. )

    Комментарии ( 2 ) Блоги Прямой эфир

    Симуляция работы Arduino в Proteus 8 Professional (программно)

    Для этого нам понадобиться ПО Proteus.

    Распаковываем библиотеку и берем от туда ARDUINO.IDX и ARDUINO.LIB и копируем в папку библиотек Proteusа в моем случаи (windows 7 x64) это D:\ProgramData\Labcenter Electronics\Proteus 8 Professional\LIBRARY\ .

    После этого перезапустите Proteus и сможете добавить Arduino Uno R3 / Mega (Atmega1280)/ Mega2560 Rev 3

    Можно конечно собрать все просто на контроллере тойже ATmega328.

    После нам нужно будет проверить в Arduino IDE код и загрузить его в Proteus:

    Как установить библиотеку для Arduino

    Как установить библиотеку для Arduino

    Библиотека RemoteXY реализует взаимодействие между Arduino и Android смартфоном или планшетом. Библиотека поддерживает все доступные в проекте варианты связи. Для установки библиотеки с определенным интерфейсом необходимо использовать редактор интерфейсов на этом сайте. Редактор интерфейсов позволяет сформировать исходный код скетча, который так же включает код инициализации библиотеки для разработанного интерфейса. Вам необходимо скопировать этот код в ваш скетч, для того что бы работать с библиотекой.

    Скачать библиотеку RemoteXY можно по ссылке. По ссылке загрузите ZIP архив библиотеки последней версии.

    Для установки библиотеки в IDE Arduino необходимо зайти в меню Скетч/Импортировать библиотеку. /Add library. . В открывшемся окне выбора файла выберите скаченный ZIP архив библиотеки RemoteXY.

    После того, как вы установили библиотеку, вы можете сразу проверить ее работоспособность. Для этого вам понадобится открыть один из примеров использования библиотеки, скомпилировать и загрузить его в Arduino. Для того что бы открыть пример, выберите в меню Файл/Примеры/RemoteXY/ и далее один из примеров.

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

    Если при установке появилась ошибка вида "Библиотка уже установлена", тогда необходимо предварительно вручную удалить папку с предыдущей версией библиотеки. В ОС Windows библиотеки располагаются в разделе Документы (My documents) в папке Arduino/libraries.