Урок 5. По линии
В картинкахПосле этого урока робот ездит по нарисованной линии — по любой из трёх трасс набора или по своей, нарисованной мышью. Новых микросхем всего две, а «рулит» робот одними колёсами.
5.1. Идея: датчик линии
Датчик линии смотрит вниз, на бумагу: над чёрной линией у него OUT = 1, над белым — 0. Ставим два датчика на передние углы шасси, линия — между ними: пока робот едет ровно, оба видят белое.
5.2. Идея: съехал — подрули
Робот съезжает с линии влево — линия уходит под левый датчик. Чтобы вернуться, робот должен повернуть влево. А поворот у нас — это разница колёс (урок 1): остановить левое колесо, правое крутится — робот поворачивает влево, вокруг левого колеса. С правым — так же.
Правило на каждое колесо одно и то же: колесо крутится, пока его датчик не видит линию.
5.3. Идея: L_ON — и ещё тумблер GO
Что хотим: колесо крутится, если моторы включены (GO) и его датчик не на линии:
| GO | SL (левый видит) | LON (левое крут.) |
|---|---|---|
| 0 | любое | 0 — стоим |
| 1 | 0 | 1 — едет |
| 1 | 1 | 0 — подруливает |
- Формула:
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 CD4069UB | A G B C D E F | GO NGO GND GND GND GND GND |
| TI CD4001B | A 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. Проверка
- Загрузи трассу «стадион», поставь робота на линию (линия между датчиками), включи питание.
- Включи
GO— робот едет вдоль линии. Глаз датчика, наехавший на линию, загорается, его колесо на миг замирает — и робот подруливает обратно. Круг за кругом. - Выключи
GO— робот встаёт. - Загрузи «фасоль», потом «гантель» (⬆ у бумаги — рисунок заменится) и снова поставь робота на линию: там повороты и в другую сторону — робот проходит и их.
- Скорость шасси (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)Не получается? Что-то не работает →