Читаем Программируем Arduino. Профессиональная работа со скетчами полностью

Откройте монитор последовательного порта и введите число в диапазоне от 0 до 255 в текстовое поле в верхней части окна, слева от кнопки Send (Отправить). Затем щелкните на кнопке Send (Отправить) — вы должны увидеть, как на мультиметре изменится напряжение. Если послать число 0, напряжение должно упасть до 0. Отправка числа 127 должна дать середину между 0 и 5 В (2,5 В), а число 255 должно дать напряжение около 5 В.

В этом скетче функция loop начинается с оператора if. Условием для if является результат выполнения команды Serial.available(). То есть если монитор последовательного порта получил сообщение, выполняются коман­ды внутри фигурных скобок. В этом случае команда Serial.parseInt преобразует текст сообщения, введенного в окне монитора порта, в значение типа int, которое затем передается как аргумент команде analogWrite для вывода импульсов на контакт.


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

Так как платы Arduino обладают весьма ограниченным объемом памяти, имеет смысл включать в программу, которая в конечном итоге окажется в плате, только тот код, который действительно потребуется. Один из способов добиться этого — использовать библиотеки. В Arduino и вообще в языке C под библиотекой понимается коллекция функций.

Например, Arduino IDE включает библиотеку для работы со светодиодным жидкокристаллическим дисплеем. Она занимает примерно 1,5 Кбайт памяти для программ. Нет никакого смысла подключать эту библиотеку, если она не используется, поэтому такие библиотеки подключаются только при необходимости.

Подключение выполняется добавлением директив #include в начало скетча. Добавить инструкции include для подключения любых библиотек, поставляемых в составе Arduino IDE, можно с помощью пунктов меню Sketch—>Import Library… (Скетч—>Подключить библиотеку).

В состав Arduino IDE входит большая коллекция официальных библиотек, в том числе:

• EEPROM — для сохранения данных в электрически стираемую программируемую постоянную память (ЭСППЗУ) (Electrically Erasable Programmable Read-Only Memory);

• Ethernet — для реализации сетевых взаимодействий;

• Firmata — стандартная библиотека для реализации взаимодействий через последовательный порт;

• LiquidCrystal — для работы с алфавитно-цифровыми жидкокристаллическими дисплеями;

• SD — для чтения и записи данных на карты флеш-памяти;

• Servo — для управления сервоприводами;

• SPI — для реализации взаимодействий по шине последовательного периферийного интерфейса;

• Software Serial — для реализации взаимодействий по последовательным линиям с использованием любых цифровых выходов;

• Stepper — для управления шаговыми электромоторами;

• WiFi — для доступа к беспроводной сети WiFi;

• Wire — для реализации взаимодействий с периферией по протоколу I2C.

Некоторые библиотеки предназначены для конкретных моделей плат Arduino:

• Keyboard — позволяет платам Arduino имитировать USB-клавиатуру (Leonardo, Due и Micro);

• Mouse — позволяет платам Arduino имитировать USB-мышь (Leonardo, Due и Micro);

• Audio — утилиты для проигрывания звука (только Due);

• Scheduler — для управления выполнением нескольких потоков (только Due);

• USBHost — для подключения USB-периферии (только Due).

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

• OneWire — для чтения данных из цифровых устройств с интерфейсом 1-wire, выпускаемых компанией Dallas Semiconductor;

• Xbee — для реализации беспроводных взаимодействий;

• GFX — графическая библиотека для работы с разными дисплеями, выпускаемыми компанией Adafruit;

• Capacitive Sensing — для работы с емкостными датчиками;

• FFT — библиотека частотного анализа.

Новые библиотеки появляются постоянно, и их можно найти на официальном сайте Arduino (http://arduino.cc/en/Reference/Libraries) или с помощью поисковых систем.

Если вам понадобится использовать одну из сторонних библиотек, ее нужно установить, загрузив и сохранив в папку Libraries, находящуюся в папке Arduino (в папке Documents (Документы)). Обратите внимание на то, что в случае отсутствия папки Libraries ее сначала нужно создать и только потом добавлять в нее библиотеки.

Чтобы среда разработки Arduino IDE обнаружила вновь установленную библиотеку, ее нужно перезапустить.


Типы данных в Arduino

Для переменных типа int в Arduino C отводится 2 байта памяти. Если только скетч не предъявляет особых требований к экономии памяти, значения int используются практически для любых видов информации, даже для логических значений и маленьких целых чисел, которые можно было бы хранить в однобайтовом значении.

Полный список доступных типов данных приводится в табл. 1.1.


Таблица 1.1. Типы данных в Arduino C

Тип

Занимаемая память, байт

Диапазон значений

Примечания

boolean

1

true или false (1 или 0)

Используется для представления логических значений

char

1

–128…+128

Перейти на страницу:

Похожие книги

C++: базовый курс
C++: базовый курс

В этой книге описаны все основные средства языка С++ - от элементарных понятий до супервозможностей. После рассмотрения основ программирования на C++ (переменных, операторов, инструкций управления, функций, классов и объектов) читатель освоит такие более сложные средства языка, как механизм обработки исключительных ситуаций (исключений), шаблоны, пространства имен, динамическая идентификация типов, стандартная библиотека шаблонов (STL), а также познакомится с расширенным набором ключевых слов, используемым в .NET-программировании. Автор справочника - общепризнанный авторитет в области программирования на языках C и C++, Java и C# - включил в текст своей книги и советы программистам, которые позволят повысить эффективность их работы. Книга рассчитана на широкий круг читателей, желающих изучить язык программирования С++.

Герберт Шилдт

Программирование, программы, базы данных
Programming with POSIX® Threads
Programming with POSIX® Threads

With this practical book, you will attain a solid understanding of threads and will discover how to put this powerful mode of programming to work in real-world applications. The primary advantage of threaded programming is that it enables your applications to accomplish more than one task at the same time by using the number-crunching power of multiprocessor parallelism and by automatically exploiting I/O concurrency in your code, even on a single processor machine. The result: applications that are faster, more responsive to users, and often easier to maintain. Threaded programming is particularly well suited to network programming where it helps alleviate the bottleneck of slow network I/O. This book offers an in-depth description of the IEEE operating system interface standard, POSIX (Portable Operating System Interface) threads, commonly called Pthreads. Written for experienced C programmers, but assuming no previous knowledge of threads, the book explains basic concepts such as asynchronous programming, the lifecycle of a thread, and synchronization. You then move to more advanced topics such as attributes objects, thread-specific data, and realtime scheduling. An entire chapter is devoted to "real code," with a look at barriers, read/write locks, the work queue manager, and how to utilize existing libraries. In addition, the book tackles one of the thorniest problems faced by thread programmers-debugging-with valuable suggestions on how to avoid code errors and performance problems from the outset. Numerous annotated examples are used to illustrate real-world concepts. A Pthreads mini-reference and a look at future standardization are also included.

David Butenhof

Программирование, программы, базы данных