🤖 Робототехника 🚗 Робомашинка
1 2 3 4 5 6 7 8 9 10 11 12
Урок 8 · код

Кокпит — приборная панель

Цель урока Превратить простой пульт в «кокпит»: добавить регулировку скорости, приборы на экране (скорость полоской, текущая команда) и индикатор связи.

⚙️ Скорость на лету

Заведём переменную speed и будем менять её клавишами + и -. Меняем по событию нажатия (а не каждый кадр), с ограничением 80…255:

if event.type == pygame.KEYDOWN:
    if event.key in (pygame.K_EQUALS, pygame.K_KP_PLUS):
        speed = min(255, speed + 20)   # быстрее
    if event.key in (pygame.K_MINUS, pygame.K_KP_MINUS):
        speed = max(80, speed - 20)    # медленнее

📊 Приборы на экране

Рисуем «полоску» скорости — это просто прямоугольник, ширина которого равна скорости. И показываем, есть ли связь (у car есть подсказка car.online):

# полоска скорости
pygame.draw.rect(screen, (60,60,80), (24,140,255,20))
pygame.draw.rect(screen, (108,178,255), (24,140, speed, 20))

link = "есть связь" if car.online else "режим показа"

Запусти cockpit.py: ↑↓ ←→ руль, +/- скорость.

⬇️ cockpit.py robot.py
💡 Это та же приборная панель, что в играх Полоска скорости — как полоска жизней в «Космосе»: прямоугольник, длина которого зависит от числа. Ничего нового — просто рисуем по числам.

🛠️ Честно: почему машину уводит в сторону

Ты заметишь, что при «вперёд» машина едет не идеально прямо, а забирает влево или вправо. Это нормально: у неё простые DC-моторы без датчиков оборотов, и каждый крутится чуть по-своему — одинаковая команда даёт чуть разную скорость. Колёса ещё и проскальзывают.

Лечится калибровкой: тому борту, что быстрее, чуть убавим скорость. В robot.py у каждого мотора есть множитель trim:

car.left.trim  = 1.0     # уводит вправо → уменьшай left.trim (напр. 0.9)
car.right.trim = 1.0     # уводит влево  → уменьшай right.trim
⚠️ Идеально прямо не поедет Даже с калибровкой DC-моторы дают приблизительный прямой ход — это особенность дешёвых моторов, а не ошибка. Точное движение требует датчиков оборотов (энкодеров) с регулятором или шаговых моторов — это продвинутый уровень (честно поговорим в уроке 11).
✅ Проверка На экране видно команду, скорость-полоску и состояние связи. +/- реально меняют резвость машины. Подобрал trim так, что машина едет почти прямо? Готов к самому зрелищному уроку — радару.

🧠 Проверь себя

Выбери ответ. Ошибёшься — 30 секунд на то, чтобы вернуться в урок и перечитать.

Полоска скорости на экране — это что?

✅ Как полоска жизней в «Космосе»: прямоугольник, длина которого зависит от числа.

Почему машину при «вперёд» уводит в сторону?

✅ Это нормально. Лечится калибровкой: тому борту, что быстрее, чуть убавляем скорость.
← НазадУрок 7 — Первый заезд