Слайд 2
2 Движение вперед Движение вперед базовой тележки задается подачей на левый и правый мотор одинаковой скорости. В TRIK Studio для подачи мощности на мотор существует отдельный блок «Моторы вперед». У этого блока два свойства: Порты Скорость.
Слайд 4
4 Подключение моторов У контроллера ТРИК четыре порта для подключения силовых моторов: M1, M2, M3 и M4.
Слайд 5
5 Подключение моторов Подключение моторов в 2D-модели по умолчанию: левый — к порту M3 правый — к порту M4. Настройку подключения моторов можно изменить в режиме отладки на центральной панели в разделе «Моторы».
Слайд 7
7 Движение назад Движение назад выполняется аналогично. Используем блок «Моторы назад».
Слайд 9
9 Движение назад Но! Диапазон подаваемой мощности: от -100 до 100 %. То есть для движения назад можно использовать и блок «Моторы вперед», подав мощность -100 %.
Слайд 10
10 Движение назад Но! Диапазон подаваемой мощности: от -100 до 100 %. То есть для движения назад можно использовать и блок «Моторы вперед», подав мощность -100 %.
Слайд 11
11 Повороты Повороты можно разделить на 3 типа: резкий поворот мощность подается только на одно колесо плавный поворот мощность подается на два колеса, но на одно больше поворот на месте одинаковая мощность с разными знаками на два колеса
Слайд 12
12 Модели алгоритмов Представленные выше алгоритмы – тайм-модели. Движение осуществляется по таймеру. Это «плохой» подход, так как в этом случае выполняемое действие зависит от заряда аккумулятора. Правильно будет использовать ожидание значения энкодеров. В этом случае перед элементарным действием необходимо сбросить значения энкодеров. Остальные элементарные действия (движение назад, повороты) реализуются аналогично.
Слайд 13
13 Точные перемещения Поставьте галочку «Сетка». Теперь вы можете отслеживать точные перемещения модели. 1 клетка = 17,5 см Также, в режиме «отладка» всегда можно посмотреть параметры визуальной модели Для удобства длина и размер базы робота совпадают с размером клетки (17,5 см)
Слайд 14
14 Переменные Переменная — поименованная область памяти. В TRIK Studio можно ввести свои переменные, используя блоки: «Инициализация переменной» «Выражение»
Слайд 15
15 Нецелые числа пишутся через точку. Например: 1.75 Для перехода на новую строку используйте « Shift » + « Enter » Созданным переменным можно присваивать другие переменные, если последние были объявлены и инициализированы ранее. Например: u = 5* err В блоке «Выражение» можно как создавать новые переменные, так и записывать выражения. Переменные
Слайд 16
16 Задача №1. Проехать вперед, развернуться на 180°, проехать задом. Использовать энкодерную модель. Задача №2. Обогнуть угол. Проехать вперед со скоростью 60, повернуть на 90°, проехать вперед с максимальной скоростью, остановиться в зеленом круге. Использовать энкодерную модель. Энкодеры. Задача
Слайд 17
17 Точные перемещения. Задача Задача №1. Проехать вперед ровно на 1 метр и 5 сантиметров. Использовать энкодерную модель. Вам пригодятся следующие параметры: d = 5,6 см (диаметр колеса) CPR = 360 (полный оборот колеса)
Слайд 18
18 Решение. Для решения этой задачи необходимо вспомнить элементарные формулы из курса школьной математики: расчет длины окружности и угла поворота. Введем следующие переменные: d — диаметр колеса робота dist — расстояние, которое необходимо проехать роботу cpr — один оборот колеса в градусах (количество сигналов на оборот) p —периметр (длина) окружности en — количество энкодеров Точные перемещения. Решение
Слайд 20
20 Точные перемещения. Задача Для решения вам понадобится дополнительный параметр: b = 17.5 см (база робота) Задача №2 (самостоятельно). Развернуться на месте ровно на 90 градусов. Использовать энкодерную модель.
Слайд 21
21 Алгоритм Алгоритм — набор инструкций, описывающих порядок действий исполнителя для достижения результата решения задачи за конечное число действий, при любом наборе исходных данных. Исполнитель: робот или любое другое устройство Инструкции: включить мотор, ждать 3 секунды, повернуть серводвигатель на 80 градусов, включить диод и т.д. Блок - схема — распространенный тип схем (графических моделей), описывающих алгоритмы или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединенных между собой линиями, указывающими направление последовательности. Действие 1 Начало Действие 2 Действие 3 Конец
Слайд 22
22 Алгоритмические структуры Следование (последовательность) — однократное выполнение операций в том порядке, в котором они записаны в тексте программы. Ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения заданного условия. Цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется заданное условие
Слайд 23
Следование (последовательность) — однократное выполнение операций в том порядке, в котором они записаны в тексте программы. 23 Следование действие 1 Начало действие 2 Конец Блок-схема Псевдокод speed=-100; robot.motor.[M2].setPower(100); robot.motor.[M3].setPower(speed); robot.wait(1500) Пример в TRIK Studio Пример в TRIK Studio
Слайд 24
Задача. Написать алгоритм движения модели «змейкой». Использовать энкодерную модель. 24 Следование. Задача
Слайд 25
25 Ветвление Выполнение программы идет по одной из двух, нескольких или множества ветвей. Выбор ветви зависит от условия на входе ветвления и поступивших сюда данных. Существует две основные формы условной инструкции, встречающиеся в реальных языках программирования: условный оператор (оператор if ) оператор многозначного выбора (оператор switch )
Слайд 26
26 Ветвление. Условный оператор Встречаются следующие формы условного оператора: Условный оператор с одной ветвью Условный оператор с двумя ветвями Условный оператор с несколькими условиями Условный оператор реализует выполнение одной последовательности (ветви) команд при условии, что некоторое логическое выражение (условие) принимает значение «истина», и другой последовательности (ветви), если выражение "ложно". Любая из этих последовательностей может быть "пустой", т.е. не выполнять никаких действий.
Слайд 27
27 Условный оператор с 1 ветвью Пример в TRIK Studio if (encoder.[E2].read() < 500) robot.motor.[M2].setPower(100); robot.motor.[M1].setPower(100); Псевдокод Блок-схема Условие действие 1 нет да
Слайд 28
28 Условный оператор с 2 ветвями if (encoder.[E2].read() < 500) robot.motor.[M2].setPower(100); else robot.motor.[M1].setPower(100); robot.wait(2000); Пример в TRIK Studio Условие действие 1 действие 2 нет да Блок-схема Псевдокод
Слайд 29
29 Несколько условий Условие Действие 1 нет да Блок-схема Псевдокод Условие Действие 2 да Действие 3 нет if (encoder.[E2].read() < 500) robot.motor.[M2].setPower(50); elseif (encoder.[E2].read() < 1000) robot.motor.[M2].setPower(100); else robot.motor.[M1].setPower(100); robot.wait(2000); Пример в TRIK Studio
Слайд 30
30 Ветвление. Задача Задача: вывести на экран грустный смайлик, если робот далеко от стены, и веселый, если близко. За границу считать значение 50 ИК датчика. Инфракрасный датчик расстояния — аналоговый датчик для измерения расстояния. Рабочий диапазон: 10–80 см. В TRIK Studio все датчики подключаются на панели «Настройка сенсоров».
Слайд 31
31 Ветвление. Задача Задача: вывести на экран грустный смайлик, если робот далеко от стены, и веселый, если близко. За границу считать значение 50 ИК датчика. В TRIK Studio все датчики подключаются на панели «Настройка сенсоров».
Слайд 32
32 Ветвление. Задача Задача: вывести на экран грустный смайлик, если робот далеко от стены, и веселый, если близко. За границу считать значение 50 ИК датчика. Или в режиме 2D-модели на панели «Порты».
Слайд 33
33 Ветвление. Задача Задача: вывести на экран грустный смайлик, если робот далеко от стены, и веселый, если близко. За границу считать значение 50 ИК датчика. Для ветвления в TRIK Studio используется блок «Условие», у которого имеется только одно свойство — само условие. Использование значений датчика осуществляется в TRIK Studio через сенсорные переменные. При подключении датчика: к порту A1 используется сенсорная переменная sensorA1 к порту A2 — sensorA2 и т.д. Сенсорной переменной нельзя присвоить значение. В нее записывается регулярно показание с датчика
Слайд 34
34 Операторы Оператор Синтаксис Пример равенство == enterButton == 1 неравенство != rightButton != 0 больше > sensorA1 > 50 меньше < sensorA2 < 30 больше или равно >= sensorA3 >= 50 меньше или равно <= sensorA4 <= 50 Операторы сравнения Для задания различных условий роботу необходимы операторы сравнения и логические операторы.
Слайд 35
35 Операторы Оператор Синтаксис Пример логическое отрицание, НЕ ! !flag логическое умножение, И && (sensorA1>20) && (sensorA1<60) логическое сложение, ИЛИ || (sensorA1<30) || (sensorA1>70) Для задания различных условий роботу необходимы операторы сравнения и логические операторы. Логические операторы
Слайд 36
36 Ветвление. Задача Задача: вывести на экран грустный смайлик, если робот далеко от стены, и веселый, если близко. За границу считать значение 50 ИК датчика. Инфракрасный датчик расстояния — аналоговый датчик для измерения расстояния. Рабочий диапазон: 10–80 см. sensorA1>50 Нарисовать веселый смайл Начало Нарисовать грустный смайл нет да подождать 3 секунды Конец
Слайд 37
37 Ветвление. Задача Псевдокод if (robot.sensor.[A1].read() > 50) robot.sadSmile(); else robot.smile(); robot.wait(3000); Решение в TRIK Studio На связях, идущих от условия, указывается в свойствах истина и ложь для определения дальнейших действий, когда условие верно, и когда — нет. Задача: вывести на экран грустный смайлик, если робот далеко от стены, и веселый, если близко. За границу считать значение 50 ИК датчика.
Слайд 38
38 Ветвление. Задача Задача для самостоятельного решения. Вывести на экран: Веселый смайлик, если ИК датчик выдает до 40. Слово «неопределенность», если ИК датчик выдает от 40 до 60. Грустный смайлик — в противном случае. Для проверки задачи при помощи инструмента «стена» нарисуйте в режиме 2D-модели препятствие перед роботом.
Слайд 39
39 Switch Представляет собой структуру, построенную по принципу меню, и содержит все возможные варианты условий и инструкции, которые следует выполнить в каждом конкретном случае. В TRIK Studio реализуется с помощью одноименного блока: Блок проверяет выражение. От блока отводятся связи, на которых указываются возможные значения этого выражения (например, переменной). Одна связь обязательно должна быть пустая (“default”) - по ней алгоритм будет двигаться, если не выполнено ни одно из условий.
Слайд 40
40 Switch Данный пример демонстрирует случайный выбор одного из четырех состояний робота: «Я готов к роботе», «Улыбаюсь», «Грущу», «Отдыхаю…»
Слайд 41
41 Switch В TRIK Studio имеется блок «Получить код кнопки», который записывает код нажатой кнопки в переменную. Все коды кнопок представлены в кодировке ASCII. Зная коды кнопок, с помощью switch можно написать своё меню. Задача : выводить на экран робота в 2D-модели по нажатию кнопок контроллера ТРИК.
Слайд 42
42 Switch Выполнять действия по нажатию клавиш: «вверх» (103) — крутить моторами вперед «вниз» (108) — крутить моторами назад «влево» (105) — поворачивать влево «вправо» (106) — поворачивать вправо «ввод» (28) — улыбаться и говорить «Привет» «Esc» (1) — выход из программы Задача для самостоятельного решения.
Слайд 43
43 Цикл Существует 4 основных вида циклов: Безусловные циклы Цикл с предусловием Цикл с постусловием Цикл со счетчиком Цикл — управляющая конструкция в языках программирования для организации многократного выполнения набора инструкций.
Слайд 44
44 Цикл безусловный while true do robot.motor.[M2].setPower(100); Пример в TRIK Studio В этом случае у программы может не быть конца! Условие Начало действие 1 Блок-схема Псевдокод
Слайд 45
45 Цикл с предусловием Блок-схема Псевдокод Условие Начало действие 1 нет да действие 2 Конец while encoder.[E2].read() < 500 do robot.motor.[M2].setPower(100); robot.motor.[M1].setPower(100); Пример в TRIK Studio
Слайд 46
46 Цикл с постусловием Пример в TRIK Studio Условие действие 1 нет да действие 2 Конец do robot.motor.[M2].setPower(100); robot.wait(1); while encoder.[E2].read() < 500 robot.motor.[M1].setPower(100); Блок-схема Начало Псевдокод
Слайд 47
47 Цикл с итерациями итерация Пример в TRIK Studio robot.motor.[M3].setPower(100); for (i = 0; i < 1000; i++) robot.wait(1); robot.motor.[M4].setPower(100); Счетчик с условием Начало действие 1 действие 2 Конец итерация Блок-схема Псевдокод
Слайд 48
48 Цикл. Задача Задача «Настроение робота»: выводить на экран веселый смайлик, если робот на черном поле, и грустный, если на белом. За границу считать значение 50 датчика света. Датчик освещенности – аналоговый датчик для измерения освещенности. Выдает значение от 0 до 100. sensorA1>50 Нарисовать веселый смайл Начало Нарисовать грустный смайл нет да
Слайд 49
49 Цикл. Задача Задача «Настроение робота»: выводить на экран веселый смайлик, если робот на черном поле, и грустный, если на белом. За границу считать значение 50 датчика света. Бесконечные циклы реализуются путем соединения одного из блоков с каким-либо предыдущим. Для циклов с условиями в TRIK Studio используется блок «Цикл с предусловием». А с итерациями — блок «Цикл».
Слайд 50
50 Цикл. Задача Задача «Настроение робота»: выводить на экран веселый смайлик, если робот на черном поле, и грустный, если на белом. За границу считать значение 50 датчика света. Псевдокод while true do if (robot.sensor.[A1].read() > 50) robot.smile(); else robot.sadSmile(); robot.wait(30); Решение в TRIK Studio
Слайд 51
51 Цикл. Задача Нарисуйте масляное пятно при помощи инструмента «карандаш» в режиме 2D-модели. Толщину карандаша задайте «30».
Слайд 52
52 Цикл. Задача Задача для самостоятельного решения: «Кентервильское привидение». Кентервильский робот: привидение рисует каждую ночь лужи красной краской. Убедившись, что лужа красная, он довольный скрывается из виду. Когда красная краска заканчивается, он рисует лужи зеленым и расстроенный отключается. Научите робота определять цвет лужи и выключаться, если лужа зеленая. В первый раз робот всегда в приподнятом настроении.
Слайд 53
53 Цикл. Задача Пояснение. Выводить на экран: Веселый смайлик, если робот видит красную лужу (меньше 23) или пустой пол (больше 37) Грустный смайлик (в течение 3 секунд) — в противном случае (зеленая лужа). А затем закончить выполнение программы. Считывать новое значение с датчика каждую секунду. Задача для самостоятельного решения: «Кентервильское привидение».
Слайд 54
54 Цикл. Задача Напишите программу: плавный разгон робота в течение 2 секунд, а затем плавное торможение в течение 3 секунд. Задача для самостоятельного решения: «Разгон и торможение».