Сделаем из минибота - робот лазер. Наделим его функцией перемещения в случайном направлении и добавим лазер - тогда получится робот, который может самостоятельно поиграть с котом. Или робот из звёздных войн, тут уже полёт фантазии не ограничивается.
Предполагается что у Вас уже есть набор Минибот, и вы собрали его по инструкции в руководстве пользователя. Тогда дополнительно понадобится:
Что нужно | Кол-во, шт |
---|---|
Модуль лазера | 1 |
Установите в Arduino IDE библиотеки, которые представлены по ссылкам выше. О том как устанавливаются библиотеки описано в руководстве пользователя, входящем в комплект, либо посетите соответствующий раздел Базы Знаний.
Внимание! Подразумевается что библиотеки для входящих в набор модулей вы уже установили так как это описано в руководстве пользователя!
#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 сек.
}
Отсоедините кабель от контроллера, поставьте платформу на ровную поверхность и переведите переключатель питания в положение ON. Робот будет передвигаться в случайном направлении, проецируя впереди лазером красную точку.