1. Платформа и конструкция
Занятие 1. Платформа и конструкция под регламент
Цель занятия: обучающиеся собирают стационарное устройство, отвечающее всем требованиям регламента, и выводят первое показание датчика на экран.
Занятие открывается входной диагностикой (10 мин, см. главную страницу модуля) и над-образовательным блоком: знакомство, правила работы в парах, договорённость «код пишет каждый, устройство одно».
Требования регламента к устройству
Регламент (раздел «Описание задания») требует стационарное устройство — оно не ездит, а стоит на рабочем столе перед стартовой линией поля. Обязательная комплектация:
| Компонент | Зачем в задачах | Роль в SPIKE Prime |
|---|---|---|
| 2 мотора с энкодерами или сервопривода | ввод чисел поворотом стрелки (компетенция 1.3.3); вывод стрелкой на шкале (компетенция 3) | средние моторы, порты A и B |
| Датчик расстояния | пороги, зоны, наличие/высота объекта (1.2–1.3.1) | ультразвуковой, порт C |
| Датчик освещённости | чёрно-белые карточки (1.3.2) | датчик цвета в режиме отражения, порт D |
| Экран | вывод переменных и результатов | матрица 5×5 хаба + консоль (print) |
| ≥2 датчика касания или 2 кнопки | подтверждение ввода, «по нажатию кнопки вывести…» | левая и правая кнопки хаба |
print() в консоль страхует, если судья согласен смотреть ноутбук, а матрица 5×5 плохо читает многозначные числа (бегущая строка). На турнире заранее уточните у судьи, какой канал он принимает.Разбор (worked example): «расстояние на экран»
Минимальная программа компетенции 1.1 — эталон, из которого вырастут все решения модуля. Псевдокод:
цикл бесконечно:
d ← показание датчика расстояния (мм)
если d корректно (объект виден):
вывести округлённое d/10 (см) на экран и в консоль
пауза 100 мсPython, LEGO SPIKE 3:
from hub import port, light_matrix
import distance_sensor, runloop
async def main():
while True:
d = distance_sensor.distance(port.C) # мм; -1, если объекта нет
if d > 0:
sm = round(d / 10) # регламент требует сантиметры
print("Расстояние:", sm, "см")
await light_matrix.write(str(sm))
await runloop.sleep_ms(100)
runloop.run(main())Построчный разбор: distance_sensor.distance возвращает миллиметры или -1, когда объект вне зоны видимости — проверка d > 0 обязательна, иначе на экран уедет «-0»; деление на 10 и round — потому что судья сверяет сантиметры по линейке; пауза 100 мс — чтобы бегущая строка успевала отрисоваться и датчик не опрашивался вхолостую.
Практика
Собрать основание
Плоская рама из балок: контроллер закреплён горизонтально экраном вверх, кнопки доступны без риска сдвинуть устройство. Проверка: устройство поднимается за раму одной рукой, ничего не отваливается.
Закрепить датчик расстояния «на стенку»
Датчик горизонтально, «глазами» вперёд, по центру короткой стороны, высота оси 5–10 см — чтобы луч попадал в стенку 9×21 см, а не поверх неё. Нос датчика — заподлицо с передним краем рамы: так расстояние «от робота» и «от датчика» совпадают, судья меряет линейкой от переднего края.
Закрепить датчик освещённости «на карточку»
Вертикально вниз, зазор до стола 0,5–1 см — это прямое требование Задания 2 регламента. Сделайте выносной кронштейн сбоку рамы, чтобы карточку 5×5 см было удобно подкладывать, не задевая устройство.
Установить моторы под будущие шкалы
Оба мотора осями вверх или вперёд на жёстких креплениях: один — ввод (стрелку крутит рука), второй — вывод (стрелку крутит программа). Ось не должна задевать раму на полном обороте.
Запустить worked example и проверить
Залить программу, поставить стенку на 15 см — экран и консоль показывают 15 ± 1 см. Двигать стенку — показания следуют за ней.
Типичные ошибки
- Датчик расстояния слишком низко/высоко — луч уходит под стенку или над ней, показания скачут. Признак: расстояние «прыгает» на десятки см при неподвижной стенке.
- Датчик освещённости на 3–4 см от стола — отражение размывается, белое и чёрное почти не различаются. Держите 0,5–1 см.
- Хлипкое крепление контроллера — при нажатии кнопки устройство сдвигается, а в Задании 1 это меняет расстояние до стенки и рушит порог. Признак: после нажатий показания «поплыли».
- Забыли про
-1у датчика расстояния — программа выводит мусор, когда объект убрали.
Мини-проверка выхода
Чек-лист комплектации (сдаёт каждая команда): (1) устройство содержит все 5 обязательных компонентов регламента; (2) worked example выводит корректные сантиметры на обоих каналах; (3) команда отвечает: «почему датчик расстояния стоит заподлицо с передним краем?»