Урок прогресс
0% завершено
В предыдущей теме мы разобрали, как калибровать ИК датчики.
Почему бы теперь не создать робота-питомца, который реагирует на ласку. Робот может распознавать поглаживания при помощи ИК датчиков и действовать соответственно.
Нам нужно, чтобы робот выполнял определённые действия, когда обнаруживает руку:
- Когда руку обнаруживает левый датчик (Left), повернуть налево.
- Когда руку обнаруживает правый датчик (Right), повернуть направо.
- Когда оба датчика (левый и правый) обнаруживают руку, Кварки должен представиться и улыбнуться.
- Когда ничего не обнаружено, не делать ничего.
Напишем код!
- Добавим блок when flag clicked (когда нажат флажок) из панели Events (События).
- Перейдём на панель Sensors (Датчики) и добавим два блока set () IR sensor thresholds to () (задать_пороговое значение _ ИК датчика_) и укажем пороговое значение, которое ты вычислил на прошлом уроке.
- Добавим блок set robot orientation as () (задать положение робота_) и выбрать вертикальное.
- После этого добавим блок forever (всегда) из панели Control (Управление). Мы используем этот блок, потому что хотим постоянно проверять, обнаруживает ли датчик линию.
- Затем добавим блок if-else (если-иначе) внутрь блока forever (всегда).
- Далее перейдём к панели Sensors (Датчики) и добавим блок is () IR sensor active? (_ИК датчик активен?) в белое окошко блока if-else (если-иначе). Инфракрасный датчик станет активным, когда обнаружит чёрную линию. Это значит, что его значение должно быть выше порогового значения. Данный блок будет проверять, действительно ли показание датчика выше порогового значения.
- Скопируем блок if (если) и поместим его внутрь двух веток блоков if (если). Изменим величину на IR-L.
- Теперь у нас есть две ветки, охватывающих все четыре условия. Давайте рассмотрим их по очереди.
- Первый случай, когда рука не обнаружена. Добавим блок clear screen (очистить экран) из панели Display (Отображение).
- Второй случай, когда руку обнаруживает датчик IR-R (правый). В этом случае робот повернёт налево. Добавим блок go () at () % speed for () seconds (двигаться_с_% скоростью в течение _ секунд) из панели Robot (Робот). Зададим направление налево и время 0,3 секунды.
- Третий случай, когда руку обнаруживает датчик IR-L (левый). В этом случае робот повернёт направо. Добавим блок go () at () % speed for () seconds (двигаться_с_% скоростью в течение _ секунд) из панели Robot (Робот). Зададим направление направо и время 0,3 секунды.
- Наконец, руку обнаруживают оба датчика. Пусть робот улыбнётся и воспроизведёт запись: “Привет, я – Кварки!”, при помощи блока play sound () until done (воспроизвести запись _ до конца)
- Первый случай, когда рука не обнаружена. Добавим блок clear screen (очистить экран) из панели Display (Отображение).
Код завершён!
Запустим его, чтобы проверить!