Разделим движение робота на операции: «Прямо» и «Поворот».
Подпрограмма «Прямо»
–
это движение по прямой.
Подпрограмма «Поворот» осуществляет поворот на 90 градусов.
27
Задания для закрепления материала
28
Встреча 6. Лабиринт
Поиск выхода из лабиринта является классической задачей, которую решают не
только робототехники, но и программисты.
Для начала допустим, что лабиринт нам известен. Напишем алгоритм прохождения
по заданному маршруту. Выделим подпрограммы:
«Шаг вперед»:
«Поворот налево»:
«Поворот направо»:
Подпрограмму «Шаг назад» напишите самостоятельно.
Таймер для выполняемых действий подбирается в зависимости от размеров
лабиринта.
Для Lego EV3:
Программа будет представлять собой набор действий, описанных выше,
выполненных в необходимом нам порядке.
29
В случае если лабиринт неизвестен, необходимо использовать датчик расстояния для
обнаружения стены, преграждающей дорогу. Основные алгоритмы прохождения
лабиринта будут рассмотрены после изучения конечных и бесконечных циклов.
Отступление 4. Непостоянное время
Моторы, подключаемые к контроллерам, часто оснащаются энкодерами –
датчиками количества оборотов. Если нам необходимо переместить реального робота
на заданное расстояние, то использование таймера не дает достаточной точности
передвижения, поскольку сильно зависит от физических факторов, например, таких, как
заряд аккумулятора или состояние поверхности, по которой происходит передвижение.
Использование энкодеров частично решают эту проблему. В TRIK Studio для ожидания
количества оборотов используется блок «Ждать энкодер»:
При подсчете оборотов мотора не забывайте обнулять показание энкодера в
нужное время, в том числе и в начале программы, применяя блок «Сбросить показания
энкодера», так как подсчет оборотов ведется непрерывно.
Программа перемещения на одну клетку по энкодерам выглядит так:
30
Задания для закрепления материала
31
Встреча 7. Бег по кругу
Роботы часто выполняют одну и ту же задачу неоднократно. Мы уже видели, как
можно заставить программу выполняться бесконечное число раз. Но иногда достаточно,
чтобы операция была исполнена 5, 10 или 100 раз. В программе TRIK Studio это возможно
благодаря оператору «Цикл» из палитры.
Вернемся к задаче «Штурм замка». Бесконечный цикл, который мы в ней
использовали, выглядел следующим образом:
Пусть в замке проживает наш хороший знакомый, но его нет дома. Постучимся три
раза, развернемся и уедем.
Используем блок «Цикл». Из оператора «Цикл» исходят две линии соединения: одна
направлена на начало цикла, вторая отправляет нас дальше: на действие после цикла.
Выделим блок «Цикл». В свойствах указаны итерации, то есть нужно определить,
сколько раз мы будем выполнять наше действие. Щелкаем на линию соединения,
смотрящую на начало цикла, и в ее свойствах указываем условие – «Тело цикла».
Последний блок исполняемого действия цикла соединяем с блоком «Цикл».
Для Lego EV3:
Итак, мы рассмотрели два типа циклов – бесконечный (безусловный) и с
итерациями. Циклы с условием будут показаны после изучения операторов ветвления.
32
Задания для закрепления материала
33
Встреча 8. Разноцветная дорога
Мы выяснили, что ЭР-3К может не только передвигаться, но и видеть предметы.
Еще одна способность робота – это определение цвета и света. Появляется она благодаря
соответствующим датчикам. В одной из задач мы успешно избежали касания окрашенной
стены. Но что делать, если окрашен пол? Попробуем использовать датчик света. Любая
поверхность отражает свет, но количество отраженного света зависит от свойств
поверхности, чем темнее поверхность, тем меньше она отражает. Допустим, что
неокрашенный пол – белый, а покрашенный – черный.
Датчик света возвращает значения от 0 до 100, где 100 соответствует белому свету и
0 – черному. Для датчика света в палитре имеется блок «Ждать свет». В свойствах блока
видим три записи: «Проценты» – количество света (от 0 до 100), «Порт к которому
подключаемся» и «Считанное значение», в нашем случае меньше 50 процентов. В
настройках сенсоров контроллера выставляем сенсор света, подключенный к порту A1.
Для контроллера Lego EV3:
Теперь пятно на полу нам не страшно. В качестве обратной связи в задачах
используются: для ТРИК – блок «Сказать», для Lego EV3 – блок «Гудок».
Контроллер ТРИК определяет цвета по видеокамере, а не по датчикам, поэтому
следующая задача только для контроллеров Lego (работа с видеокамерой будет описана
позже, в том числе и определение интенсивности света). Программа «Спелый фрукт»:
определяем, что предмет красный.
В свойстве блока «Ждать цвет» указываем цвет, а в свойстве «Порт» – порт
подключения датчика. Обратная связь – блок «Играть звук».
Отступление 5. Раздвигаем горизонты
34
Набор датчиков, входящий в комплектацию образовательных наборов, можно
существенно расширить, не прибегая к специальной доработке контроллера. Ниже
приведен список датчиков, которые уже были опробованы с контроллером ТРИК:
- датчик температуры -LM35DT/NOPB;
- датчик влажности - HR202, модуль датчика влажности воздуха [Гигрометр];
- датчик углеводородных газов - модуль датчика углеводородных газов MQ-2;
- датчик освещенности - модуль датчика освещенности KY-018;
- датчик звука - микрофон AVR PIC KY-037;
- датчик вибрации - модуль датчика вибрации;
- датчик Холла - MA3144 цифровой модуль датчика Холла;
- датчик движения- HC-SR501;
- потенциометр - модуль потенциометра;
- датчик тока - ACS712 модуль, датчик тока [5А];
- датчик дождя;
- датчик пламени - датчик огня;
- датчик дыма - модуль датчика газа MQ-135;
- кнопка - кнопка концевая (положения) 3-pin;
- датчик угарного газа - модуль датчика угарного газа MQ-7;
- датчик уровня жидкости;
- расхода воды - YF-S201, расходомер воды [1-30 л/мин];
В TRIK Studio для датчиков, не входящих в комплект поставки, в «Настройка
сенсоров» их названия отсутствуют. Для работы с такими датчиками достаточно
выбрать любой из имеющихся в настройках сенсоров, соблюдая правило – аналоговые
датчики на портах А1-А6, цифровые – D1-D2.
Отступление 6. Графики значений датчиков
В среде TRIK Studio можно увидеть графическое представление значений датчиков.
В режиме «Отладка», закладка «Графики». Датчик, значения которого нужно
посмотреть, выбирается в выпадающем меню.
35
Числовые данные экспортируются в файл формата <Имя_Файла>.csv, который
можно открыть, например, в MS Excel.
36
Задания для закрепления материала
37
Встреча 9. Познакомимся с неизвестными
При изучении явлений природы и общества мы на каждом шагу сталкиваемся с
различными величинами. Одни из них являются постоянными, неменяющимися,
например, количество окон в классе или скорость света, другие же меняются в
зависимости от условий. Первые величины называются постоянными или константами,
вторые – переменными. В программировании переменная – это объект, которому дано имя
и который может принимать различные значения.
Для объявления переменных и задания им определенных значений в TRIK Studio
используется блок «Инициализация переменной».
В свойствах блока имя переменной и ее значение.
Программа «Челночный бег»: бег от одной линии к другой, меняя направление на
противоположное.
В этой задаче переменную Y мы объявляем 11 раз, и на каждом шаге ее значение
разное, либо 1, либо (-1). Заметим, что мощность моторов также является величиной
переменной: 100 или (-100). И еще одно наблюдение: при мощности (-100) действие
«Моторы вперед» становится действием «Моторы назад».
Для объявления сразу нескольких переменных или больших вычислений
используется блок функция:
В правой части строки «Значение» разрешено использовать круглые скобки, числа,
базовые арифметические операции, ранее определенные переменные, а также
зарезервированные переменные, список которых можно посмотреть в режиме «Отладка» в
правой части экрана.
Более подробно узнать о доступных в среде математических выражениях и
операциях с ними можно прочитав раздел «Синтаксис выражений» в файле помощи,
который вызывается нажатием клавиши F1 или из меню «Справка». Функции,
поддерживаемые средой TRIK Studio, также подробно указаны в файле помощи.
Приведем пример применения встроенной функции time:
38
Программа выводит на дисплей время, прошедшее с начала исполнения. Обратим
внимание, что на дисплей выводится числовое значение функции, а не строка, поэтому не
забывайте ставить галочку в «Редакторе свойств», раздел «Вычислять».
Для строковых переменных работают те же правила:
Достарыңызбен бөлісу: |