Знакомство с бампером, оборудованным девятью датчиками линий

В этом уроке

  • Принцип работы бампера — модуля датчика линии
  • Подключение и настройка бампера
  • Получение данных от датчика линии

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

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

Принцип работы датчика линии

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

Принцип действия датчика основан на отражении света: он хорошо отражается от светлых поверхностей и плохо — от тёмных. Зная уровень отраженного света от черной и белой поверхности, можно судить о том, над какой линией в данный момент находится датчик.

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

Поэтому необходимо производить калибровку датчика. Она также необходима для коррекции цвета линии и фона. Подробнее об этом мы поговорим немного позже.

Установка бампера на машинку


  1. Закрепите адаптер на бампере.
  2. Закрепите бампер с адаптером на штанге.
  3. Подключите бампер к колодке I2C при помощи шлейфа. Для удобства Вам может  потребоваться снять датчик расстояния.

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

Также напоминаем, что мы уже изменили адрес модуля на 0x0C в уроке об адресации I2C. Если вдруг пропустили, обязательно перейдите туда и измените I2C-адрес бампера.

Чтение сигнала с датчиков

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

#include <Wire.h>                       // Подключаем библиотеку для работы с аппаратной шиной I2C
#include <iarduino_I2C_Bumper.h>        // Подключаем библиотеку для работы с бампером I2C-flash
iarduino_I2C_Bumper bum(0x0C);          // Объявляем объект bum для работы с функциями и методами библиотеки
void setup(){                          
     Serial.begin(9600);                // Инициируем передачу данных в монитор последовательного порта
     bum.begin();                       // Инициируем работу с бампером
}                                           
void loop(){                                           
  Serial.println(bum.getLineAnalog(5)); // Читаем значение с датчика и выводим их в последовательный порт   
}

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

num — номер опрашиваемого датчика (в нашем примере №5 — тот, что посередине).

Возвращаемое значение: значение типа uint16_t — число от до 4096. Чем светлее поверхность под датчиком, тем выше значение.

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

Обратите внимание, что значения становятся меньше, когда линия находится под датчиком.

Поздравляю с изучением данного урока!
Следующий урок:
№15. Проект «Машинка-музыкант» .
приступить к изучению

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

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

В магазин

Обсуждение

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