Урок 5. По линии

В картинках

После этого урока робот ездит по нарисованной линии — по любой из трёх трасс набора или по своей, нарисованной мышью. Новых микросхем всего две, а «рулит» робот одними колёсами.


5.1. Идея: датчик линии

Датчик линии смотрит вниз, на бумагу: над чёрной линией у него OUT = 1, над белым — 0. Ставим два датчика на передние углы шасси, линия — между ними: пока робот едет ровно, оба видят белое.

линия между датчикамипрямолевый на линиилевое стоит, робот влевоправый на линииправое стоит, робот вправо
Два датчика линии на передних углах. Датчик, наехавший на линию, останавливает своё колесо — робот поворачивает к линии и снова едет прямо.

5.2. Идея: съехал — подрули

Робот съезжает с линии влево — линия уходит под левый датчик. Чтобы вернуться, робот должен повернуть влево. А поворот у нас — это разница колёс (урок 1): остановить левое колесо, правое крутится — робот поворачивает влево, вокруг левого колеса. С правым — так же.

Правило на каждое колесо одно и то же: колесо крутится, пока его датчик не видит линию.

5.3. Идея: L_ON — и ещё тумблер GO

Что хотим: колесо крутится, если моторы включены (GO) и его датчик не на линии:

GOSL (левый видит)LON (левое крут.)
0любое0 — стоим
101 — едет
110 — подруливает
  • Формула: LON = GO И НЕ SL.

Как в уроке 2 — по де Моргану: «A И НЕ B» = «НЕ (НЕ A ИЛИ B)». С НЕ GO (NGO, инвертор CD4069):

  • LON = НЕ-ИЛИ(SL, NGO), RON = НЕ-ИЛИ(SR, NGO) — два вентиля CD4001.

Направление колёс не меняется — оба всегда вперёд: L_DIR = R_DIR = VCC.

5.4. Идея: почему трассы такие

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

5.5. Сборка

Отдельный проект (новый холст): бумага с трассой, шасси, два датчика линии и две микросхемы. Трассы — в файлах набора track-1-stadium.json, track-2-bean.json, track-3-dumbbell.json.

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

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

Шаг 2. Бумага и трасса

Бумага — 800 × 500 (подпись у ручки). У бумаги на панели ⬆ — выбери файл трассы: на бумаге появится чёрная линия. Начни со стадиона.

ДетальНога / действиеМетка / куда
Paper (бумага)размер (ручка в углу)
место
800 × 500
куда удобно

Шаг 3. Робот

Датчики линии — меню «Датчики» → Line. Левый тяни за оранжевую гайку к передней левой зелёной точке шасси, правый — к передней правой. Шасси поставь на линию: носом вдоль неё, чтобы линия прошла между датчиками.

ДетальНога / действиеМетка / куда
Robot chassis (шасси)скорость колёс (Alt/⌘+щелчок)
L_ON
R_ON
L_DIR
R_DIR
место
60
LON
RON
VCC
VCC
на глаз: левее середины по ширине, у верха по высоте
Line (датчик линии)OUT
посадить
SL
на fl (передняя левая точка шасси)
Line (датчик линии)OUT
посадить
SR
на fr (передняя правая точка шасси)

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

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

Шаг 5. Микросхемы

ДетальНога / действиеМетка / куда
TI CD4069UBA
G
B
C
D
E
F
GO
NGO
GND
GND
GND
GND
GND
TI CD4001BA
B
J
C
D
K
E
F
G
H
SL
NGO
LON
SR
NGO
RON
GND
GND
GND
GND

Не подключать: H…L у CD4069UB, L и M у CD4001B.

5.6. Проверка

  1. Загрузи трассу «стадион», поставь робота на линию (линия между датчиками), включи питание.
  2. Включи GO — робот едет вдоль линии. Глаз датчика, наехавший на линию, загорается, его колесо на миг замирает — и робот подруливает обратно. Круг за кругом.
  3. Выключи GO — робот встаёт.
  4. Загрузи «фасоль», потом «гантель» (⬆ у бумаги — рисунок заменится) и снова поставь робота на линию: там повороты и в другую сторону — робот проходит и их.
  5. Скорость шасси (Alt/⌘+щелчок по корпусу): 30, 60, 120 — на всех держит линию; на 120 подруливает резче.
ДатчикиЛевоеПравоеРобот
линия между нимикрутитсякрутитсяедет прямо
левый на линиистоиткрутитсяповорачивает влево
правый на линиикрутитсястоитповорачивает вправо

Свою трассу можно нарисовать мышью (✏ на панели бумаги): одна замкнутая линия, без перекрёстков, повороты — плавные, не круче круга диаметром в два робота.


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

Вставлять в новый проект — это отдельный проект. Нужны микросхемы из robot-chips.json. Трассу загрузи у бумаги (⬆).

# Урок 5 — по линии: два датчика линии; датчик видит линию — его колесо стоит, робот подруливает к линии.# Вставка: Cmd+I в новый проект. Отдельный проект. Трасса — у бумаги ⬆ → файл трассы из набора.# ---------- питание ----------power(VCC)ground(GND)# ---------- бумага под трассу ----------mpaper p{w=800, h=500}at(p, 0, 0)# ---------- робот: шасси, датчики линии на передних углах ----------mchassis rb{spd=60}(L_ON=LON, R_ON=RON, L_DIR=VCC, R_DIR=VCC)at(rb, p, 265, 80)mline sl(OUT=SL)mount(sl, rb.fl)mline sr(OUT=SR)mount(sr, rb.fr)# ---------- GO — моторы ----------input(GO)# ---------- CD4069: НЕ GO ----------"TI CD4069UB"(A=GO, G=NGO, B=GND, C=GND, D=GND, E=GND, F=GND)# ---------- CD4001: колесо крутится, если GO и его датчик не видит линию ----------"TI CD4001B"(A=SL, B=NGO, J=LON, C=SR, D=NGO, K=RON, E=GND, F=GND, G=GND, H=GND)

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