Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия Следующая версия справа и слева
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. Робот будет передвигаться прямо до препятствия,​ стараясь обогнуть его. При этом у робота включена световая и звуковая сигнализация. Световая сигнализация попеременно меняет цвет (красный и синий),​ звуковая - меняет тон. Получаем настоящую машину экстренных служб.