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

pygame ↔ робот

Цель урока Связать компьютер и робота: жмём стрелки в pygame — настоящий сустав поворачивается.

🧠 Идея — командуем объектами, а не проводами

Firmata уже залита (урок 7), поэтому код Arduino мы не трогаем. В Python библиотека pymata управляет ножками, но мы спрятали её за понятным объектом arm: у него есть суставы arm.base, arm.shoulder, arm.elbow, arm.grip — и у каждого свойство .angle.

📝 Код на Python

Поставь библиотеку (один раз): pip install pymata4. Затем запусти control_one.py — стрелки крутят базу:

from arm import connect
arm = connect()              # найдёт Arduino с Firmata

# ... в игровом цикле, по нажатию стрелок ...
arm.base.angle += 2          # повернуть базу на 2° правее

Пределы углов сустав хранит сам (в arm.py), поэтому за безопасный диапазон не выйти — max/min писать не нужно. Один объект — одна понятная команда.

⬇️ control_one.py arm.py (связь + объекты)
⚠️ Порт на Ubuntu (Nano) У Nano порт обычно /dev/ttyUSB0 (чип CH340; на старых системах нужен его драйвер). Если Python пишет «нет доступа к порту» — добавь себя в группу: sudo usermod -aG dialout $USER, потом перезайди в систему. pymata4 сам найдёт плату — порт прописывать обычно не нужно.
💡 Робота ещё нет под рукой? arm.py работает и в «режиме показа»: без Arduino программа просто не двигает серво и не падает. Можно писать и проверять код заранее.

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

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

Какой Python-библиотекой мы управляем ножками Arduino?

✅ Верно — pymata4 (часто пишут просто «pymata»). Она командует Firmata по USB.

Через какое свойство объекта-сустава задаётся угол? (arm.base.____)

✅ Верно — angle. Например arm.base.angle = 120. Пределы объект хранит сам.
← НазадУрок 7 — Заливаем Firmata