Пошаговое руководство: сборка умного четырёхногого робота на Arduino
Компоненты и материалы
| Arduino Mega 2560 | 1 |
| Сервоприводы SG90 (9g) | 12 шт. |
| Ультразвуковой датчик HC‑SR04 | 1 |
| Светодиоды 5 мм: красные | 4 |
| Светодиоды 5 мм: зелёные | 4 |
| Светодиоды 5 мм: синие | 4 |
| Пинзаголовки 40 контактов (1 ряд, 0.1″) | 2 |
| Печатная плата (Custom PCB) | 1 |
Инструменты
- Паяльник
Приложения и сервисы
- Arduino IDE
О проекте
Четырёхногая ходячая машина на Arduino. Принцип ходьбы основан на сохранении центра тяжести (CG) внутри треугольника, образованного тремя опорными ногами, пока четвёртая делает шаг.
Шаг 1: Комплектующие
- Arduino Mega или Uno
- Сверленная печатная плата
- 12 сервоприводов 9g
- Ультразвуковой датчик HC‑SR04
- 4 RGB‑светодиода (или раздельные R/G/B)
- Картон для корпуса
Шаг 2: Центр тяжести

Если все ноги под углом 45°, центр тяжести в центре. При движении ноги CG смещается. Чтобы сохранить устойчивость, две противоположные ноги держат угол >45°, образуя треугольник опоры, внутри которого находится CG. Четвёртая нога свободна для шага.
Шаг 3: Алгоритм ходьбы

- Старт: ноги C, D вытянуты наружу; A, B — сжаты.
- Нога B поднимается и выносится далеко вперёд.
- Все ноги сдвигаются назад — корпус движется вперёд.
- Нога D поднимается и ставится рядом с корпусом (зеркальное положение).
- Нога A выносится вперёд.
- Снова сдвиг всех ног назад.
- Нога C возвращается в исходное положение — цикл повторяется.
Шаг 4: Чертежи
Файлы для лазерной резки: LEGS.pdf (ноги), BODY.pdf (корпус).
Шаг 5: Сборка корпуса


Собираем по чертежам PDF.
Шаг 6: Схема подключения

Arduino Mega имеет 15 PWM‑пинов: 12 — для серв, 3 — для RGB‑светодиода, 2 — для ультразвукового датчика. Собираем свой шилд.
Шаг 7: Инициализация сервоприводов
Загружаем скетч инициализации и собираем ноги согласно фото.

#include <Servo.h>
Servo servo[4][3];
const int servo_pin[4][3] = { {10,11,2}, {3,4,5}, {6,7,8}, {9, 12, 13} };
void setup() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
servo[i][j].attach(servo_pin[i][j]);
delay(20);
}
}
}
void loop() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
servo[i][j].write(90);
delay(20);
}
}
}
Шаг 8: Финальный скетч
Полный код управления роботом (ходьба, повороты, жесты, танец). Использует библиотеку FlexiTimer2 для плавного движения серв при 50 Гц. Реализована кинематическая модель: перевод декартовых координат кончиков ног в углы сервоприводов.


/* Основной скетч spider.ino */
#include <Servo.h>
#include <FlexiTimer2.h>
#define ledred 46
#define ledblue 44
#define ledgreen 45
Servo servo[4][3];
const int servo_pin[4][3] = { {2, 3, 4}, {20, 6, 7}, {8, 9, 17}, {16, 12, 13} };
const float length_a = 55;
const float length_b = 77.5;
const float length_c = 27.5;
const float length_side = 71;
const float z_absolute = -28;
const float z_default = -50, z_up = -30, z_boot = z_absolute;
const float x_default = 62, x_offset = 0;
const float y_start = 0, y_step = 40;
const float y_default = x_default;
volatile float site_now[4][3];
volatile float site_expect[4][3];
float temp_speed[4][3];
float move_speed;
float speed_multiple = 1;
const float spot_turn_speed = 4;
const float leg_move_speed = 8;
const float body_move_speed = 3;
const float stand_seat_speed = 1;
volatile int rest_counter;
const float KEEP = 255;
const float pi = 3.1415926;
// ... (полный код с функциями stand, step_forward, step_back, turn_left, turn_right,
// hand_wave, hand_shake, head_up, head_down, body_dance, servo_service,
// set_site, wait_reach, wait_all_reach, cartesian_to_polar, polar_to_servo)
// Код объёмный, см. исходник выше.
Скетч для настройки нулевых позиций (spider_fix.ino)
// Locate the initial position of legs
#include <Servo.h>
Servo servo[4][3];
const int servo_pin[4][3] = { {10,11,2}, {3,4,5}, {6,7,8}, {9, 12, 13} };
void setup() {
for (int i = 0; i < 4; i++)
for (int j = 0; j < 3; j++) {
servo[i][j].attach(servo_pin[i][j]);
delay(20);
}
}
void loop() {
for (int i = 0; i < 4; i++)
for (int j = 0; j < 3; j++) {
servo[i][j].write(90);
delay(20);
}
}
Подключите светодиоды согласно пинам в коде. Загрузите основной скетч — робот готов!
3D‑модели и детали

Схемы

Производственный процесс
- Сделай свой LUMAZOID: DIY Arduino музыкальный визуализатор
- Панель управления полётным симулятором 2020 на Arduino Nano: LCD и CDI-дисплеи
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Arduino-таймер для мытья рук: простое DIY-устройство для борьбы с COVID‑19
- Arduino RGB-микшер цветов: Простой проект для начинающих
- Мастерство 8×8 LED-матрицы с Arduino Uno: Пошаговое руководство
- DIY Arduino Radionics EMR Treatment Device — радионическое устройство
- Наружные RGB-прожекторы с DMX-управлением: бюджетное DIY-решение на Arduino
- DIY LED-рулетка — собираем одноигровой аркадный автомат на Arduino Nano
- Умная автоматизированная парковка на Arduino: контроль мест и шлагбаум