Различия
Здесь показаны различия между двумя версиями данной страницы.
Следующая версия Следующая версия справа и слева | |||
main:upgkits:emebot [2020/04/01 16:33] smartadmin создано |
main:upgkits:emebot [2020/04/01 16:54] smartadmin |
||
---|---|---|---|
Строка 2: | Строка 2: | ||
====== Описание ====== | ====== Описание ====== | ||
Попробуем воссоздать из робота полицейскую машину. Или машину скорой помощи. Для этого поместим на робота мигалки и сигнализацию. И оставим режим движения по объезду препятствий. | Попробуем воссоздать из робота полицейскую машину. Или машину скорой помощи. Для этого поместим на робота мигалки и сигнализацию. И оставим режим движения по объезду препятствий. | ||
+ | |||
+ | ===== Дополнительные модули ===== | ||
+ | Предполагается что у Вас уже есть набор Минибот, и вы собрали его по инструкции в руководстве пользователя. Тогда дополнительно понадобится: | ||
+ | |||
+ | ^ Что нужно ^ Кол-во, шт ^ | ||
+ | | [[https://smartelements.ru/collection/moduli/product/modul-adresnyh-svetodiodov-h4|Модуль адресных светодиодов]] | 2 | | ||
+ | | [[https://smartelements.ru/collection/moduli/product/modul-zummera-2|Модуль зуммера]] | 1 | | ||
+ | |||
+ | ===== Библиотеки ===== | ||
+ | * [[http://files.smartelements.ru/know_libs/robotSE.zip|Библиотека robotSE (для робота)]] | ||
+ | * [[http://files.smartelements.ru/know_libs/NewTone.zip|Библиотека NewTone (для зуммера)]] | ||
+ | * [[http://files.smartelements.ru/know_libs/Adafruit_NeoPixel.zip|Библиотека Adafruit_NeoPixel (для модуля светодиодов)]] | ||
+ | |||
+ | ===== Порядок действий ===== | ||
+ | ==== Шаг 1. Пересоберите робота ==== | ||
+ | - С помощью отвёртки, входящей в комплект набора, снимите с платформы модуль ИК-приёмника | ||
+ | - С помощью отвёртки, входящей в комплект набора, прикрепите на место модуля ИК-приёмника - [[https://smartelements.ru/collection/moduli/product/modul-zummera-2|Модуль зуммера]] | ||
+ | - Присоедините модуль зуммера с помощью трёхпроводного шлейфа к выводам D10 мотор шилда. | ||
+ | - С помощью отвёртки, входящей в комплект набора, снимите с платформы модуль 4-х разрядного индикатора | ||
+ | - С помощью отвёртки, входящей в комплект набора, прикрепите на нижние крепления модуля 4-х разрядного индикатора - два [[https://smartelements.ru/collection/moduli/product/modul-adresnyh-svetodiodov-h4|модуля адресных светодиодов]] | ||
+ | - Присоедините один из модулей адресных светодиодов с помощью трёхпроводного шлейфа к выводам D11 мотор шилда. | ||
+ | |||
+ | ==== Шаг 2. Установите библиотеки ==== | ||
+ | Установите в Arduino IDE библиотеки, которые представлены по ссылкам выше. О том как устанавливаются библиотеки описано в руководстве пользователя, входящем в комплект, либо посетите соответствующий [[main:info:libs|раздел Базы Знаний]]. | ||
+ | |||
+ | ++++ Зачем нужна библиотека для зуммера?|У вас мог возникнуть вопрос, зачем нужна отдельная библиотека для зуммера, если в Arduino IDE уже входит функция tone(), позволяющая работать с зуммером. Дело в том, что библиотека работающая с ультразвуковым дальномером и функция tone() вместе работать не смогут, вызывая конфликты. Для того чтобы этого избежать мы и будем пользоваться дополнительной библиотекой для зуммера. ++++ | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Внимание! Подразумевается что библиотеки для входящих в набор модулей вы уже установили так как это описано в руководстве пользователя! | ||
+ | </WRAP> | ||
+ | |||
+ | |||
+ | ==== Шаг 3. Загрузите скетч на контроллер ==== | ||
+ | <file Arduino> | ||
+ | #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; //смена флага | ||
+ | } | ||
+ | </file> | ||
+ | |||
+ | ==== Шаг 4. Робот вперёд! ==== | ||
+ | Отсоедините кабель от контроллера, поставьте платформу на ровную поверхность и переведите переключатель питания в положение ON. Робот будет передвигаться прямо до препятствия, стараясь обогнуть его. При этом у робота включена световая и звуковая сигнализация. Световая сигнализация попеременно меняет цвет (красный и синий), звуковая - меняет тон. Получаем настоящую машину экстренных служб. |