Урок 1. Шасси: два колеса

В картинках

После этого урока на холсте арена — бумага, стенки и препятствие — и робот на двух колёсах. Тумблерами ты ведёшь его вперёд, назад и разворачиваешь на месте, а перо на роботе рисует на бумаге, где он проехал.


1.1. Идея: руля нет — есть два колеса

У робота-пылесоса, у танка и у нашего робота нет поворотных колёс. Колёс два, слева и справа, и у каждого свой мотор. Поворот получается из разницы: какое колесо куда крутится.

У каждого колеса две ноги:

  • ON — крутится (1) или стоит (0);
  • DIR — куда: 1 — вперёд, 0 — назад.
L_DIR=1 R_DIR=1оба вперёдпрямоL_DIR=0 R_DIR=0оба назадназадL_DIR=1 R_DIR=0левое вперёд, правое назадпо часовойL_DIR=0 R_DIR=1наоборотпротив часовой
Четыре движения из двух колёс. Зелёная стрелка — колесо крутится вперёд, красная — назад. Руля нет: робот поворачивает разницей колёс.

1.2. Идея: четыре движения

Оба ON у нас на одном тумблере GO, а направления — на двух тумблерах LDIR и RDIR:

  • оба вперёд — робот едет прямо;
  • оба назад — едет назад;
  • левое вперёд, правое назад — крутится на месте по часовой;
  • наоборот — против часовой.

Колёса крутятся с одной скоростью — 60 точек холста в секунду, расстояние между ними — 80 точек. Разворот на месте получается быстрым: почти четверть оборота за секунду.

1.3. Идея: арена

  • Бумага запоминает след пера. Перо на задней точке шасси опущено всегда — бумага покажет весь путь робота.
  • Контур — стенки по краю прямоугольника. Робот в них упирается: колёса крутятся, а сам он стоит.
  • Препятствие — сплошной блок внутри арены.

Масштаб: 5 точек холста — 1 сантиметр. Арена 800 × 500 точек — это 160 × 100 см, робот — 14 × 16 см.

1.4. Сборка

Ставим арену и робота. Механика — из кнопки «Механика» (бумага, контур, препятствие, шасси, перо), тумблеры и питание — из палитры. Метка на ноге детали — двойной клик по ноге, ввести имя.

Шаг 1. Питание

ДетальНога / действиеМетка / куда
PowerвыходVCC
GroundвыходGND

Шаг 2. Арена

Бумагу положи первой, контур — поверх неё, углы в углы. Размер — ручкой в правом нижнем углу: пока деталь выделена, у ручки подписан размер. Препятствие — посередине арены, чуть правее центра.

ДетальНога / действиеМетка / куда
Paper (бумага)размер (ручка в углу)
место
800 × 500
куда удобно
Contour (контур)размер (ручка в углу)
место
800 × 500
ровно поверх бумаги (углы совпадают)
Obstacle (препятствие)размер (ручка в углу)
место
80 × 80
на глаз: в середине по ширине, в середине по высоте

Шаг 3. Робот

Шасси поставь в левой части арены, носом вправо. Перо тяни за оранжевую гайку основания к задней зелёной точке шасси — защёлкнется. Ногу DOWN пера — на VCC: перо всё время опущено и рисует путь.

ДетальНога / действиеМетка / куда
Robot chassis (шасси)скорость колёс (Alt/⌘+щелчок)
L_ON
R_ON
L_DIR
R_DIR
место
60
GO
GO
LDIR
RDIR
на глаз: у левого края по ширине, в середине по высоте
Pen (перо)DOWN
посадить
VCC
на r (задняя точка шасси)

Шаг 4. Тумблеры

GO останется до конца набора — включает моторы. LDIR и RDIR — проба: в уроке 2 направление колёс будут давать микросхемы, а эти два тумблера уберём.

ДетальНога / действиеМетка / куда
Input (тумблер)выходGO
Input (тумблер)выходLDIR
Input (тумблер)выходRDIR

1.5. Проверка

  1. Включи питание. GO выключен — робот стоит.
  2. LDIR = 1, RDIR = 1, включи GO — робот едет вперёд, перо рисует прямую. Выключи GO.
  3. LDIR = 0, RDIR = 0, GO — робот едет назад.
  4. LDIR = 1, RDIR = 0 — робот крутится на месте по часовой; LDIR = 0, RDIR = 1 — против часовой.
  5. Доехал до стенки — колёса крутятся, а робот стоит: корпус шасси краснеет. Развернуться на месте, прижавшись, не выйдет — углы корпуса задевают стенку. Сначала назад (0/0), потом разворот (1/0) — и снова вперёд.
LDIRRDIRРобот (GO включён)
11едет вперёд
00едет назад
10крутится на месте по часовой
01крутится против часовой

Вставка урока 1 (Cmd+I)

Вставлять в новый проект. Ставит всё: питание, арену, робота с пером и тумблеры.

# Урок 1 — шасси: два колеса, направление каждого; арена с препятствием, перо рисует путь.# Вставка: Cmd+I в новый проект.# ---------- питание ----------power(VCC)ground(GND)# ---------- арена: бумага, контур поверх неё, препятствие ----------mpaper p{w=800, h=500}mwall w{w=800, h=500}mblock ob{w=80, h=80}at(p, 0, 0)at(w, p, 0, 0)at(ob, p, 440, 210)# ---------- робот: шасси, перо на задней точке ----------mchassis rb{spd=60}(L_ON=GO, R_ON=GO, L_DIR=LDIR, R_DIR=RDIR)at(rb, p, 80, 210)mpen pen(DOWN=VCC)mount(pen, rb.r)# ---------- GO — моторы (остаётся до конца набора) ----------input(GO)# ---------- проба: направление колёс (уберём в уроке 2) ----------input(LDIR)input(RDIR)

Не получается? Что-то не работает →