Урок 1. Шасси: два колеса
В картинкахПосле этого урока на холсте арена — бумага, стенки и препятствие — и робот на двух колёсах. Тумблерами ты ведёшь его вперёд, назад и разворачиваешь на месте, а перо на роботе рисует на бумаге, где он проехал.
1.1. Идея: руля нет — есть два колеса
У робота-пылесоса, у танка и у нашего робота нет поворотных колёс. Колёс два, слева и справа, и у каждого свой мотор. Поворот получается из разницы: какое колесо куда крутится.
У каждого колеса две ноги:
ON— крутится (1) или стоит (0);DIR— куда: 1 — вперёд, 0 — назад.
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. Проверка
- Включи питание.
GOвыключен — робот стоит. LDIR= 1,RDIR= 1, включиGO— робот едет вперёд, перо рисует прямую. ВыключиGO.LDIR= 0,RDIR= 0,GO— робот едет назад.LDIR= 1,RDIR= 0 — робот крутится на месте по часовой;LDIR= 0,RDIR= 1 — против часовой.- Доехал до стенки — колёса крутятся, а робот стоит: корпус шасси краснеет. Развернуться на месте, прижавшись, не выйдет — углы корпуса задевают стенку. Сначала назад (
0/0), потом разворот (1/0) — и снова вперёд.
| LDIR | RDIR | Робот (GO включён) |
|---|---|---|
| 1 | 1 | едет вперёд |
| 0 | 0 | едет назад |
| 1 | 0 | крутится на месте по часовой |
| 0 | 1 | крутится против часовой |
Вставка урока 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)Не получается? Что-то не работает →