Программируем Arduino. Профессиональная работа со скетчами. - [63]

Шрифт
Интервал

#include

SoftwareSerial mySerial(10, 11); // RX, TX

Когда возникнет потребность использовать данный конкретный последовательный порт (связанный с контактами 10 и 11), достаточно создать именованный объект для его обслуживания — в данном случае mySerial — и затем выполнить в него запись, как показано далее:

mySerial.begin(9600);

mySerial.println("Hello World");

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

После импортирования библиотеки было бы желательно иметь возможность создать именованный радиоприемник и определить, какой адрес I2C он будет обслуживать. Для простоты неплохо было бы иметь на выбор два варианта: первый, с использованием адреса по умолчанию 0x60, и второй, позволяющий определять нестандартный адрес:

#include

TEA5767Radio radio = TEA5767Radio();

// или TEA5767Radio radio = TEA5767Radio(0x60);

Поскольку библиотека обслуживает УКВ-радиоприемник, она должна уметь настраивать частоту, то есть пользователь должен иметь возможность написать такой код:

radio.setFrequency(93.0);

Числовой параметр здесь представляет частоту в мегагерцах. Автор скетча хотел бы задавать частоту именно в таком виде, а не в малопонятном формате int, который передается аппаратному модулю. Библиотека должна скрывать технические детали и самостоятельно выполнять необходимые преобразования.

Это все, что касается проектирования данной библиотеки. Теперь приступим к созданию кода.


Заголовочный файл

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

#include

#ifndef TEA5767Radio_h

#define TEA5767Radio_h

class TEA5767Radio

{

private:

int _address;

public:

  TEA5767Radio();

  TEA5767Radio(int address);

  void setFrequency(float frequency);

};

#endif

Команда #ifndef предотвращает многократное импортирование библиотеки и представляет стандартный прием для заголовочных файлов.

Далее следует определение класса, который имеет приватный (private) раздел с единственной переменной _address. Эта переменная хранит адрес I2C устройства.

Общедоступный раздел (public) включает две функции для создания объекта-радиоприемника, одна позволяет указать адрес устройства, а другая не позволяет и использует адрес по умолчанию. В общедоступном разделе имеется также функция setFrequncy.


Файл реализации

Код, фактически реализующий функции, находится в файле TEA5767Radio.cpp:

#include

#include

TEA5767Radio::TEA5767Radio(int address)

{

  _address = address;

}

TEA5767Radio::TEA5767Radio()

{

  _address = 0x60;

}

void TEA5767Radio::setFrequency(float frequency)

{

       unsigned int frequencyB = 4 * (frequency *

         1000000 + 225000) / 32768;

       byte frequencyH = frequencyB >> 8;

       byte frequencyL = frequencyB & 0XFF;

       Wire.beginTransmission(_address);

       Wire.write(frequencyH);

       Wire.write(frequencyL);

       Wire.write(0xB0);

       Wire.write(0x10);

       Wire.write(0x00);

       Wire.endTransmission();

       delay(100);

}

Создают новый объект радиоприемника два метода. Оба просто записывают в переменную _address адрес I2C устройства, либо переданный в параметре address, либо адрес по умолчанию 0x60. Метод setFrequency содержит почти весь код из оригинального скетча (sketch_07_01_I2C_TEA5767), кроме следующей строки, использующей значение переменной _address, чтобы соединиться с устройством I2C:

Wire.beginTransmission(_address);


Файл с ключевыми словами

Папка с библиотекой может также содержать файл с именем keywords.txt. Этот файл не является обязательным, библиотека будет работать и без него. Но этот файл позволяет среде разработки Arduino IDE выделять цветом любые ключевые слова библиотеки. В нашей библиотеке только два таких слова: ее имя TEA5767Radio и имя метода setFrequency. Файл с ключевыми словами может сдержать комментарии в строках, начинающихся с символа #. Далее приводится содержимое этого файла:

#######################################

# Карта подсветки синтаксиса для TEA5767Radio

#######################################

#######################################

# Типы данных (KEYWORD1)

#######################################

TEA5767Radio KEYWORD1

#######################################

# Методы и функции (KEYWORD2)

#######################################

setFrequency KEYWORD2

Ключевые слова должны определяться как KEYWORD1 или KEYWORD2, даже при том что версия 1.4 среды разработки Arduino IDE выделяет ключевые слова обоих типов оранжевым цветом.


Папка с примерами

Если внутри папки библиотеки создать папку с именем examples, все скетчи в этой папке автоматически будут регистрироваться средой разработки Arduino IDE во время запуска, и вы сможете получить доступ к ним через меню Examples (Примеры) в подменю с именем библиотеки. Примеры скетчей могут быть самыми обычными скетчами, только хранящимися в папке библиотеки. Далее приводится пример использования этой библиотеки:


Рекомендуем почитать
Удаление предустановленной Windows 8

На первый взгляд процедура удаления Windows 8 ничем не отличается от вполне обычного форматирования винчестера с последующей установкой системы. К сожалению, все гораздо сложней.


Работаем на нетбуке. Начали!

Вы приобрели нетбук? И теперь хотите понять, чем он отличается от привычного всем ноутбука? Тогда вы держите в руках действительно необходимую книгу. Прочитав ее, вы не только освоите все тонкости, относящиеся к работе с нетбуками, но и узнаете о том, как работать на компьютере. Вы научитесь выбирать мобильный компьютер и аксессуары к нему, узнаете, как установить и настроить операционную систему, научитесь пользоваться пакетом Microsoft Office, выясните, какие программы следует иметь на жестком диске, как защитить сам ноутбук и данные на нем, можно ли модернизировать нетбук и что делать в случае его поломки.


1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера.


Ноутбук для начинающих. Мобильно, доступно, удобно

В книге даны детальные рекомендации по выбору и покупке ноутбука. Приведены описания работы, настройки и ремонта компонентов мобильного компьютера – винчестера, карты Wi-Fi, PCMCIA, ЖК-экрана и т. д. Читатель найдет в ней подробные рекомендации по ускорению работы мобильных компьютеров с операционными системами Windows 98, Windows XP и Windows Vista, а также пути решения проблем при поломках, попадании ноутбука в воду, заражении вирусами, сбоях программ. Даны полезные советы по увеличению времени работы от батареи, настройкам, доступу в Интернет.


Элементы схемотехники цифровых устройств обработки информации

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


Wi-Fi: Все, что Вы хотели знать, но боялись спросить

Жизнь современного человека — это движение. Мобильность для нас становится одним из самых важных моментов для работы, для общения, для жизни. Многие из нас сейчас уже не представляют жизнь без сотовых телефонов, которые из средства роскоши превратились в предмет, без которого жизнь современного человека стала просто немыслима. Многие уже оценили все преимущества Bluetooth, GPRS. Эти устройства превратили наши телефоны из средств связи в незаменимых помощников в работе. К сожалению, один из самых главных недостатков этих беспроводных технологий — малый радиус действия и низкая скорость передачи данных, что сейчас становится очень важным фактором для всех нас.