Минибот - полицейский
Описание
Попробуем воссоздать из робота полицейскую машину. Или машину скорой помощи. Для этого поместим на робота мигалки и сигнализацию. И оставим режим движения по объезду препятствий.
Дополнительные модули
Предполагается что у Вас уже есть набор Минибот, и вы собрали его по инструкции в руководстве пользователя. Тогда дополнительно понадобится:
Что нужно | Кол-во, шт |
---|---|
Модуль адресных светодиодов | 2 |
Модуль зуммера | 1 |
Библиотеки
Порядок действий
Шаг 1. Пересоберите робота
- С помощью отвёртки, входящей в комплект набора, снимите с платформы модуль ИК-приёмника
- С помощью отвёртки, входящей в комплект набора, прикрепите на место модуля ИК-приёмника - Модуль зуммера
- Присоедините модуль зуммера с помощью трёхпроводного шлейфа к выводам D10 мотор шилда.
- С помощью отвёртки, входящей в комплект набора, снимите с платформы модуль 4-х разрядного индикатора
- С помощью отвёртки, входящей в комплект набора, прикрепите на нижние крепления модуля 4-х разрядного индикатора - два модуля адресных светодиодов
- Присоедините один из модулей адресных светодиодов с помощью трёхпроводного шлейфа к выводам D11 мотор шилда.
- Соедините между собой модули адресных светодиодов трёхпроводным шлейфом.
Шаг 2. Установите библиотеки
Установите в Arduino IDE библиотеки, которые представлены по ссылкам выше. О том как устанавливаются библиотеки описано в руководстве пользователя, входящем в комплект, либо посетите соответствующий раздел Базы Знаний.
Зачем нужна библиотека для зуммера?
Внимание! Подразумевается что библиотеки для входящих в набор модулей вы уже установили так как это описано в руководстве пользователя!
Шаг 3. Загрузите скетч на контроллер
#include <robotSE.h> //Подключение библиотеки для работы с платформой.
#include <NewPing.h> //Подключение библиотеки для работы с дальномером.
#include <Adafruit_NeoPixel.h> //Библиотека для работы со светодиодами
#include <NewTone.h> //Библиотека для работы с зуммером
const int min_distance = 10; //Минимальное расстояние в сантиметрах
const int PIN_BUZ = 10; //Вывод для подключения модуля зуммера
const int PIN_LED = 11; //Вывод подключения адресных светодиодов
boolean nowRed = true; //Флаг для вывода цвета
robotSE robot; //создание объекта робота
NewPing sonar(8, 9, 400); //Создание объекта дальномера. - (trig, echo, max_dist)
Adafruit_NeoPixel pixels(8, PIN_LED); //создание объекта адр. светодиодов
void setup() {
pinMode(PIN_BUZ, OUTPUT); //Установка вывода зуммера как выходной
pixels.begin(); //инициализация светодиодов
}
void loop() {
int cm = sonar.ping_cm(); //Получение расстояния с датчика.
if (cm == 0) { //Если получено нулевое значение,
return; //измерить расстояние еще раз.
}
//нумерация светодиодов начинается с 0
for(int i=0; i<8; i++) {
pixels.setPixelColor(i, pixels.Color(nowRed?255:0, 0, nowRed?0:255)); //установка цвета свечения для очередного светодиода
pixels.show(); //показать цвет светодиода
nowRed = !nowRed; //смена флага
}
NewTone(PIN_BUZ, nowRed?294:396);
if (cm < min_distance) { //Если расстояние меньше минимального,
robot.move_stop(); //остановиться.
robot.move_back(); //Немного отъехать назад.
delay(1000); //Задержка величиной 1 с.
robot.move_left(); //Выполнить поворот.
delay(500); //Задержка 200 мс.
}
robot.move_forward(); //Движение в случайную сторону
delay(1000); //Задержка 1 сек.
nowRed = !nowRed; //смена флага
}
Шаг 4. Робот вперёд!
Отсоедините кабель от контроллера, поставьте платформу на ровную поверхность и переведите переключатель питания в положение ON. Робот будет передвигаться прямо до препятствия, стараясь обогнуть его. При этом у робота включена световая и звуковая сигнализация. Световая сигнализация попеременно меняет цвет (красный и синий), звуковая - меняет тон. Получаем настоящую машину экстренных служб.