Библиотеки. Расширяем возможности контроллера

В этом уроке

  • Что такое библиотеки и для чего они нужны
  • Установка и подключение библиотек
  • Работа с библиотекой iarduino_I2C_Motor

Видео версия урока

Назначение библиотек

Некоторым модулям для работы необходимы библиотеки. Один из таких модулей — наш мотор, поэтому сейчас необходимо сказать пару слов о библиотеках и научиться их подключать. Это не займёт много времени.

Библиотека — это некоторая часть кода, подключаемая из внешнего файла и облегчающая работу с модулями или датчиками. Имеет расширение «имя_файла.h»

Как и многие другие платформы, среда программирования Arduino IDE может существенно расширять свои возможности за счет использования библиотек. Они позволяют использовать дополнительные функции, что зачастую сильно облегчает процесс написания программы. Такие функции могут использоваться, например, для управления модулями.

В Arduino IDE ряд библиотек установлен автоматически вместе со средой разработки, но Вы также можете скачивать или создавать собственные библиотеки.

Подключение библиотек в Arduino IDE

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

1) Войдите в меню «Скетч» и наведите курсор на строку «Подключить библиотеку».

2) «Подключить библиотеку». При наведении курсора на подменю справа отобразится список доступных библиотек. Для того, чтобы добавить новую, нажмите «Добавить .ZIP библиотеку».

3) «Добавить библиотеку». Укажите путь к заранее скачанному архиву с библиотекой и дважды щелкните клавишей мыши по файлу.

4)«Библиотека добавлена». После того, как архив будет загружен, в области уведомлений Вы увидите сообщение о том, что библиотека загружена. Найти её Вы можете в меню «Скетч» → подменю «Подключить библиотеку».

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

Скачайте и установите аналогично iarduino_I2C_Motor следующие библиотеки:

  1. iarduino_HC_SR04 — для работы с ультразвуковым датчиком расстояния;
  2. iarduino_HC_SR04_tmr  — вторая библиотека для работы с ультразвуковым датчиком расстояния (пояснение ниже);
  3. iarduino_IR — для работы с инфракрасным приёмником;
  4. iarduino_I2C_IR — вторая библиотека для работы с инфракрасным приёмником (пояснение ниже);
  5. iarduino_I2C_Bumper — для работы с модулем Бампер-датчик линии;
  6. iarduino_I2C_Matrix_8x8 — для работы с матрицей 8х8;
  7. iarduino_I2C_Track — для работы с дорожными знаками и светофорами;  
  8. iarduino_I2C_Address — для установки адресов модулей серии I2C-flash.

Убедитесь, что библиотеки добавлены. Все они должны быть в списке:

Щелкните клавишей мыши по строке с именем нужной библиотеки, и она будет добавлена в скетч. Кстати, в меню «Файл», подменю «Примеры» можно увидеть примеры работ с библиотеками. Там можно найти уже готовые интересные и полезные скетчи, обязательно загляните туда.

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

Проверка модулей-моторов. Функции управления моторами

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

#include <Wire.h>                 // Подключаем библиотеку для работы с шиной I2C
#include <iarduino_I2C_Motor.h>   // Подключаем библиотеку для работы с мотором
iarduino_I2C_Motor mot(0x09);     // Объявляем объект mot для работы с функциями и методами библиотеки 
                                  //  iarduino_I2C_Motor, указывая адрес модуля на шине I2C                         
void setup(){                   
    mot.begin();                  // Инициируем работу с мотором.
}                                
void loop(){                     
    mot.setSpeed(100, MOT_PWM);   // Запускаем мотор на скорости 100% ШИМ
    delay(2000);                  // Ждём 2 секунды
    mot.setStop();                // Останавливаем мотор
    delay(2000);                  // Ждём 2 секунды  
    mot.setSpeed(-100, MOT_PWM);  // Запускаем мотор на скорости 100% ШИМ в обратном направлении
    delay(2000);                  // Ждём 2 секунды  
    mot.setStop();                // Останавливаем мотор   
    delay(2000);                  // Ждём 2 секунды  
}
  1. Директива #include (1, 2 строки) используется для подключения библиотек в наш скетч. Некоторые библиотеки уже установлены в Arduino IDE, а некоторые нужно установить самостоятельно, как мы делали ранее. Однако, все они подключаются с помощью этой директивы.
  2. Библиотека Wire.h  позволяет работать с шиной I2C (именно по ней передаётся сигнал управления модулями). Библиотека уже установлена в нашу среду разработки.
  3. Библиотека iarduino_I2C_Motor.h. Библиотека добавляет удобные функции управления моторами. Постепенно мы с ними познакомимся.
  4. iarduino_I2C_Motor mot(0x09);  (3 строка). С помощью подключенной нами библиотеки iarduino_I2C_Motor создаём объект мотора с именем mot. Объект имеет имя и свойства. Одно из свойств — адрес. В нашем случае — 0х09 (это просто номер, записанный в шестнадцатеричной системе счисления).
  5. mot.setSpeed(100, MOT_PWM); (9 строка) setSpeed() — это одна из тех удобных функций управления мотором, про которые мы писали выше. В неё передаётся два параметра: скорость (в нашем случае 100%) и способ её задания. MOT_PWM означает, что число, переданное в функцию, — это процент заполнения ШИМ. Чем меньше число, тем медленнее вращается колесо. Подробнее про ШИМ мы расскажем позже.

Отлично! У машинки вращается одно колесо, правда, так далеко не уедешь. Теперь можете попробовать подключить левое колесо к плате и снова включить машинку. Теперь оба колеса вращаются, но в разные стороны, а машинка крутится на месте. Но ведь это совсем не то, чего мы хотели, что же произошло? С этим мы разберёмся в следующем уроке. 

Поздравляю с изучением данного урока!
Следующий урок:
№9. Адреса модулей на шине I2C.
приступить к изучению

Продукт в магазине

«ROBORACE» — Образовательный набор на базе Arduino

В магазин

Обсуждение

Гарантии и возврат. Используя сайт, Вы соглашаетесь с условиями.