Skip to content
1. Платформа и конструкция

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 см. Двигать стенку — показания следуют за ней.

Техника безопасности. Аккумулятор хаба — литиевый: не разбирать, не замыкать контакты, заряжать только штатным кабелем и не оставлять зарядку без присмотра. Моторы со стрелками — движущиеся части: не удерживать ось пальцами при работающей программе, длинные волосы убрать. Кабели датчиков не тянуть за провод — только за разъём.

Типичные ошибки

  1. Датчик расстояния слишком низко/высоко — луч уходит под стенку или над ней, показания скачут. Признак: расстояние «прыгает» на десятки см при неподвижной стенке.
  2. Датчик освещённости на 3–4 см от стола — отражение размывается, белое и чёрное почти не различаются. Держите 0,5–1 см.
  3. Хлипкое крепление контроллера — при нажатии кнопки устройство сдвигается, а в Задании 1 это меняет расстояние до стенки и рушит порог. Признак: после нажатий показания «поплыли».
  4. Забыли про -1 у датчика расстояния — программа выводит мусор, когда объект убрали.

Мини-проверка выхода

Чек-лист комплектации (сдаёт каждая команда): (1) устройство содержит все 5 обязательных компонентов регламента; (2) worked example выводит корректные сантиметры на обоих каналах; (3) команда отвечает: «почему датчик расстояния стоит заподлицо с передним краем?»

Уровни сложности