Лазербот
Описание
Сделаем из минибота - робот лазер. Наделим его функцией перемещения в случайном направлении и добавим лазер - тогда получится робот, который может самостоятельно поиграть с котом. Или робот из звёздных войн, тут уже полёт фантазии не ограничивается.
Дополнительные модули
Предполагается что у Вас уже есть набор Минибот, и вы собрали его по инструкции в руководстве пользователя. Тогда дополнительно понадобится:
Что нужно | Кол-во, шт |
---|---|
Модуль лазера | 1 |
Библиотеки
Порядок действий
Шаг 1. Пересоберите робота
- С помощью отвёртки, входящей в комплект набора, снимите с платформы модуль ИК-приёмника
- С помощью отвёртки, входящей в комплект набора, прикрепите на место модуля ИК-приёмника - Модуль лазера
- Подключите модуль лазера к цифровым выводам D10
Шаг 2. Установите библиотеки
Установите в Arduino IDE библиотеки, которые представлены по ссылкам выше. О том как устанавливаются библиотеки описано в руководстве пользователя, входящем в комплект, либо посетите соответствующий раздел Базы Знаний.
Внимание! Подразумевается что библиотеки для входящих в набор модулей вы уже установили так как это описано в руководстве пользователя!
Шаг 3. Загрузите скетч на контроллер
#include <robotSE.h> //Подключение библиотеки для работы с платформой. #include <NewPing.h> //Подключение библиотеки для работы с дальномером. #include <SevenSegmentTM1637.h> //Подключение библиотеки для работы с дисплеем. const int min_distance = 10; //Минимальное расстояние в сантиметрах const int PIN_LAZ = 10; //Вывод для подключения модуля лазера robotSE robot; //создание объекта робота NewPing sonar(8, 9, 400); //Создание объекта дальномера. - (trig, echo, max_dist) SevenSegmentTM1637 display(13, 12); //Создание объекта дисплея. (CLK, DIO) void setup() { pinMode(PIN_LAZ, OUTPUT); //Установка вывода лазера как выходной display.begin(); //Инициализация дисплея. display.setBacklight(100); //Установка яркости 100%. display.print("INIT"); //Вывод надписи INIT на дисплей. delay(1000); //Задержка величиной 1 с. display.clear(); //Очистка дисплея. digitalWrite(PIN_LAZ, HIGH); //Включение лазера } void loop() { int cm = sonar.ping_cm(); //Получение расстояния с датчика. if (cm == 0) { //Если получено нулевое значение, return; //измерить расстояние еще раз. } display.clear(); //Очистка дисплея. if (cm < min_distance) { //Если расстояние меньше минимального, robot.move_stop(); //остановиться. robot.move_back(); //Немного отъехать назад. display.print("BACK"); //Вывести на дисплей данные о направлении движения. delay(1000); //Задержка величиной 1 с. robot.move_left(); //Выполнить поворот. display.print("LEFT"); //Вывести на дисплей данные о направлении движения. delay(500); //Задержка 200 мс. } robot.randomMove(); //Движение в случайную сторону display.print("RAND"); //Вывести на дисплей данные о направлении движения. delay(1000); //Задержка 1 сек. }
Шаг 4. Робот вперёд!
Отсоедините кабель от контроллера, поставьте платформу на ровную поверхность и переведите переключатель питания в положение ON. Робот будет передвигаться в случайном направлении, проецируя впереди лазером красную точку.