Arduino Uno · pinport
готово
⋮

Кисть Port считает на пальцах

Пять пальцев — пять сервоприводов прямо на выводах Uno. Кисть сжимается в кулак и разгибает пальцы по одному: раз, два, три, четыре, пять.

Что на схеме

Плата Arduino Uno, к ней подключены:

  • Кисть Port — r1, площадка «Ровный пол»

Задействованы выводы платы: GND, D3, D5, D6, D9, D10. Всего соединений на схеме: 6.

Как смотреть

Нажмите ▶ Запустить — после сборки откроется окно робота (потом его открывает кнопка 🤖 над схемой). Мышью камеру можно повернуть, колесом — приблизить; щелчок по суставу показывает номер привода, канал PCA9685 и строку кода для него. Кнопка ⏺ над схемой записывает сцену в GIF — с теми поворотами камеры, что вы делаете.

Робот — не анимация, а модель с массами, шарнирами и трением: скетч только шлёт импульсы приводам и читает датчики, а встанет робот, пойдёт или упадёт — решает физика. Как она устроена — на странице «Физика сцен с роботами».

Как это работает

Первый шаг серии «от одного привода к роботу». Каждый палец — отдельный сервопривод, подключённый к выводу платы: библиотека Servo шлёт на вывод импульсы 50 раз в секунду, длина импульса задаёт угол. write(0) — палец прямой, write(90) — согнут. Импульс 500–2500 мкс указан в attach — как у приводов Port (у Servo по умолчанию 544–2400).

Что попробовать

  • Покажите «класс» (большой палец вверх) и «мир» (указательный и средний).
  • Сгибайте пальцы медленно — по градусу каждые 10 мс.

Библиотеки

Пример собирается с библиотеками:

  • Servo

Они уже установлены на сервере сборки — отмечать их в проекте вручную не нужно, список приезжает вместе с примером.

Как это устроено в коде

Основное, чем пользуется скетч:

  • Servo — управление сервоприводом по длительности импульса
  • Serial.begin() — открывает монитор порта на заданной скорости
  • delay() — пауза, на время которой ядро занято ожиданием
  • Serial.println() — печатает строку в монитор порта

В скетче 39 строк; подключено заголовков: 1. Сам скетч открыт на соседней вкладке — его можно менять и запускать заново.

Что попробовать изменить

  • Замените delay() на счёт по millis() — и loop() освободится для всего остального, что должно происходить одновременно.
  • Добавьте свои Serial.println() в интересных местах — монитор порта здесь и есть отладчик.
  • Перенесите деталь на другой вывод — на схеме и в коде — и убедитесь, что пример работает так же.
  • Нажмите «Форкнуть»: копия станет вашим проектом, и в ней можно менять что угодно.

Смотрите также

← Все примеры галереи

Схема
Проект из галереи — запускать можно, менять нельзя.

      
Сборка ещё не запускалась.

    Печатайте в Serial числа — они станут графиком. Serial.println(t); — один ряд, Serial.printf("t:%.1f h:%.1f\n", t, h); — два с подписями. Формат тот же, что понимает плоттер Arduino IDE.