Программируем Arduino. Основы работы со скетчами
Шрифт:
• Stepper — для управления шаговыми электромоторами;
• WiFi — для доступа к беспроводной сети WiFi;
• Wire — для реализации взаимодействий с периферией по протоколу I2C.
Некоторые библиотеки предназначены для конкретных моделей плат Arduino:
• Keyboard — позволяет платам Arduino имитировать USB-клавиатуру (Leonardo, Due и Micro);
• Mouse — позволяет платам Arduino имитировать USB-мышь (Leonardo, Due и Micro);
• Audio — утилиты для проигрывания звука (только Due);
• Scheduler —
• USBHost — для подключения USB-периферии (только Due).
Наконец, существует огромное число библиотек, написанных другими пользователями Arduino, которые можно загрузить из Интернета. Далее перечислены некоторые из них, пользующиеся особой популярностью:
• OneWire — для чтения данных из цифровых устройств с интерфейсом 1-wire, выпускаемых компанией Dallas Semiconductor;
• Xbee — для реализации беспроводных взаимодействий;
• GFX — графическая библиотека для работы с разными дисплеями, выпускаемыми компанией Adafruit;
• Capacitive Sensing — для работы с емкостными датчиками;
• FFT — библиотека частотного анализа.
Новые библиотеки появляются постоянно, и их можно найти на официальном сайте Arduino или с помощью поисковых систем.
Если вам понадобится использовать одну из сторонних библиотек, ее нужно установить, загрузив и сохранив в папку 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
Используется для представления кодов символов ASCII, например, A имеет код 65. Отрицательные значения обычно не используются
byte
1
0…255
Часто используется как элементарная единица данных при обмене через последовательные интерфейсы. Подробнее об этом рассказывается в главе 9
int
2
–32 768…+32 767
Целые 16-битные значения со знаком
unsigned int
2
0…65 535
Используется для увеличения точности в расчетах, где не используются отрицательные числа. Применяйте с осторожностью, так как при использовании в выражениях совместно со значениями типа int могут получаться неожиданные результаты
long
4
–2 147 483 648…+ 2 147 483 647
Требуется только для представления очень больших чисел
unsigned long
4
0…4 294 967 295
См. описание типа unsigned int
float
4
–3,4028235E+38…+3,4028235E+38
Используется для представления вещественных чисел
double
4
Как для типа float
Этот тип должен был бы занимать 8 байт и иметь более широкий диапазон и более высокую точность по сравнению с типом float. Но в Arduino тип double является полным аналогом типа float
Команды Arduino
В библиотеке Arduino доступно большое число команд. В табл. 1.2 перечислены наиболее часто используемые из них вместе с примерами.
Таблица 1.2. Функции из библиотеки Arduino
Команда
Пример
Описание
Цифровой ввод/вывод
pinMode
pinMode(8, OUTPUT);
Переводит контакт 8 в режим работы цифрового выхода. Поддерживаются также режимы INPUT и INPUT_PULLUP
digitalWrite
digitalWrite(8, HIGH);
Устанавливает высокий уровень напряжения на контакте 8. Чтобы установить низкий уровень напряжения, используйте константу LOW вместо HIGH
digitalRead
int i;
i = digitalRead(8);
Присваивает переменной i значение HIGH или LOW в зависимости от уровня напряжения на указанном контакте (в данном случае — на контакте 8)
pulseIn
i = pulseIn(8, HIGH);
Возвращает продолжительность в микросекундах следующего импульса с напряжением HIGH на контакте 8
tone
tone(8, 440, 1000);
Генерирует на контакте 8 серию импульсов с частотой 440 Гц продолжительностью 1000 мс
noTone
noTone;
Прерывает любые серии импульсов, запущенные вызовом tone
Аналоговый ввод/вывод
analogRead
int r;
r = analogRead(0);
Присваивает переменной r значение в диапазоне от 0 до 1023. Значение 0 соответствует напряжению 0 В на контакте 0, а значение 1023 — напряжению 5 В (или 3,3 В, если для питания платы используется напряжение 3,3 В)