- Простой робот состоит из контроллера, привода (моторов), датчика и питания.
- Начинают с платы вроде Arduino Uno: мигание светодиодом, затем управление мощностью через ШИМ, затем чтение датчика.
- Мотор подключают не к выводу платы напрямую, а через драйвер; питание моторов и логики продумывают отдельно.
- Код в статье — примеры из официальной документации Arduino; на плате мы их не запускали.
Содержание12 разделов ▾
- С чего начать: цель и набор
- Как устроен простой робот
- Контроллер: Arduino и аналоги
- Шаг 1. Установите Arduino IDE
- Шаг 2. Проверьте плату: мигание светодиодом
- Шаг 3. Мощность через ШИМ
- Шаг 4. Датчик расстояния
- Шаг 5. Правило поведения
- Что делать, если не работает
- Условия и ограничения
- Частые ошибки
- Короткий вывод
Простой робот состоит из контроллера, привода и датчика: вы собираете их вместе, подключаете к плате вроде Arduino и пишете программу, которая читает датчик и управляет моторами. Статья для тех, кто знает основы электричества и программирования. Вы разберёте, как связаны узлы робота, и пройдёте по шагам от мигающего светодиода до чтения датчика расстояния.
Важная оговорка про код. Все скетчи в статье взяты из официальной документации Arduino; мы сверили их со страницами справочника, но на плате не запускали. Поэтому здесь нет вывода в мониторе порта или фраз «проверено на роботе». Данные на октябрь 2026 года.
С чего начать: цель и набор
Сначала решите, что должен уметь первый робот. Чем проще цель, тем быстрее результат.
| Что хотим | Что понадобится (тип, не марка) |
|---|---|
| Проверить, что плата работает | Плата, USB-кабель, компьютер с Arduino IDE |
| Мигать светодиодом | Встроенный светодиод платы или внешний светодиод с резистором |
| Ехать вперёд и назад | Платформа с двумя моторами, драйвер мотора, источник питания |
| Остановиться перед препятствием | Датчик расстояния |
| Повернуть манипулятор | Сервопривод (серводвигатель) |
Определение робота из Википедии: автоматическое устройство, предназначенное для различных действий, обычно выполняемых человеком. Робот обычно получает информацию об окружающем пространстве с помощью датчиков и действует по заложенной программе. Подробнее о том, что такое робот и какие они бывают, читайте в статье «Что такое робот».
Как устроен простой робот
Схема соединений такая: питание подаётся на плату и отдельно на драйвер мотора, плата управляет драйвером, драйвер — моторами, датчик подключён к плате и сообщает ей о препятствиях.
| Узел | Что делает | Как связан с остальными |
|---|---|---|
| Контроллер (плата) | Выполняет программу | Читает датчики, управляет драйвером |
| Драйвер мотора | Подаёт ток на моторы | Получает команды от платы, питается от источника питания |
| Моторы | Двигают платформу | Подключены к драйверу |
| Датчик расстояния | Измеряет расстояние до препятствия | Подключён к выводам платы |
| Источник питания | Даёт энергию | Питает плату и, как правило, отдельно — драйвер |
Вывод платы рассчитан на небольшой ток. Страница примера Blink объясняет, что даже для светодиода нужен резистор: он ограничивает ток, предотвращая повреждение светодиода и вывода платы. Мотору нужно заметно больше, поэтому между платой и мотором ставят драйвер мотора или плату расширения: например, в каталоге Arduino есть Motor Shield Rev3. Допустимые токи и схему подключения смотрите в описании выбранного драйвера и платы.
Контроллер: Arduino и аналоги
Документация Arduino описывает UNO R3 как плату на микроконтроллере ATmega328P с 14 цифровыми выводами (6 из них можно использовать как выходы ШИМ), 6 аналоговыми входами, USB-разъёмом, разъёмом питания и кнопкой сброса. Её можно подключить к компьютеру по USB или питать от адаптера или батареи. Википедия называет Arduino торговой маркой аппаратно-программных средств для построения простых систем и экспериментов в области электроники, автоматики и робототехники.
Шаг 1. Установите Arduino IDE
Страница установки Arduino IDE 2 сообщает требования: Windows 10 и новее (64 бита), Linux (64 бита), macOS 10.15 и новее (64 бита). Скачайте установщик на странице загрузки Arduino. В Windows достаточно запустить скачанный файл и следовать инструкции установки, на macOS — скопировать скачанный файл в папку «Программы». Установка в Windows может занять несколько минут.
Шаг 2. Проверьте плату: мигание светодиодом
Подключите плату к компьютеру по USB и откройте встроенный пример: в меню File → Examples → 01.Basics → Blink. Страница примера объясняет, как он работает. Сначала функция pinMode(LED_BUILTIN, OUTPUT) настраивает вывод светодиода как выход. В основном цикле digitalWrite(LED_BUILTIN, HIGH) подаёт 5 вольт и зажигает светодиод, а digitalWrite(LED_BUILTIN, LOW) возвращает вывод к нулю и гасит его. Между включением и выключением delay() ставит паузу. Пример из справочника по delay() выглядит так (светодиод на выводе 13):
int ledPin = 13; // LED connected to digital pin 13
void setup() {
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop() {
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second (1000 ms)
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second (1000 ms)
}Функция setup выполняется один раз при запуске, loop повторяется бесконечно. Документация по delay() определяет её как паузу программы на указанное число миллисекунд; на странице Blink отмечено, что на это время больше ничего не происходит.
Шаг 3. Мощность через ШИМ
Мотором и светодиодом удобно управлять, меняя мощность. Для этого есть ШИМ: быстрое включение и выключение, при котором меняется доля времени «включено». Википедия определяет ШИМ как управление мощностью методом пульсирующего включения и выключения потребителя энергии. На Arduino это функция analogWrite(pin, value). По документации, она записывает на вывод сигнал ШИМ, им можно менять яркость светодиода или скорость мотора; значение value — от 0 (всегда выключено) до 255 (всегда включено). Вывод для ШИМ нужно выбирать из тех, что поддерживают эту функцию (на UNO R3 их шесть).
Пример из документации задаёт яркость светодиода по значению потенциометра:
int ledPin = 9; // LED connected to digital pin 9
int analogPin = A3; // potentiometer connected to analog pin 3 (A3)
int val = 0; // variable to store the read value
void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
}
void loop() {
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}Для мотора вместо светодиода на тот же вывод подключают вход драйвера мотора, а не сам мотор. Схему берите из описания драйвера.
Шаг 4. Датчик расстояния
Датчик расстояния подключают к выводам платы и читают с него импульс. Некоторые датчики расстояния сообщают результат длительностью импульса на выходе. Измерить длительность помогает функция pulseIn(pin, value). По документации, она ждёт начала импульса на выводе, засекает время до его окончания и возвращает длину импульса в микросекундах; если импульс не начался за время ожидания, вернёт 0. Пример из документации:
int pin = D1;
unsigned long duration;
void setup() {
Serial.begin(9600);
pinMode(pin, INPUT);
}
void loop() {
duration = pulseIn(pin, HIGH);
Serial.println(duration);
}В этом примере вывод назван D1; для своей платы укажите нужный вывод. Как перевести длительность импульса в расстояние и какие выводы использовать для запуска измерения, написано в описании вашего датчика: формулу и схему подключения берите оттуда.
Шаг 5. Правило поведения
Теперь объединяем узлы. Логика простейшего робота, избегающего препятствий, состоит из повторяющихся действий.
| Условие | Действие |
|---|---|
| Препятствие дальше порога | Ехать вперёд |
| Препятствие ближе порога | Остановиться |
| После остановки | Повернуть в сторону и снова измерить расстояние |
Порог расстояния выбирают под вашу платформу и датчик. Реализовать правило можно из деталей выше: измерение через pulseIn, управление скоростью через analogWrite, паузы через delay. Собственный готовый скетч мы здесь не приводим, потому что не можем проверить его на плате.
Что делать, если не работает
| Симптом | Возможная причина | Что проверить |
|---|---|---|
| Плата не определяется компьютером | Кабель без передачи данных или не тот порт | Другой USB-кабель, выбор порта в Arduino IDE |
| Светодиод не мигает | Не выбрана плата или порт, пример не загружен | Выбранная плата и порт в IDE |
| Светодиод не горит или тусклый | Вывод не настроен как выход | pinMode(..., OUTPUT); страница digitalWrite отмечает, что без этого светодиод может светиться тускло |
| Мотор не вращается | Не подано питание на драйвер или неверное подключение | Схема и питание драйвера |
| Датчик показывает 0 | Импульс не начался за время ожидания | Подключение выводов, питание датчика (документация pulseIn: при отсутствии импульса возвращается 0) |
Условия и ограничения
- Версия
- Arduino IDE 2, октябрь 2026 — интерфейс среды меняется; ориентируйтесь на актуальную документацию.
- Плата
- Arduino UNO R3 — у других плат выводы и напряжение другие; проверяйте по документации платы.
- Проверка
- На плате не запускалось — скетчи взяты из официальной документации и не проверены на нашей сборке.
- Безопасность
- Питание и пайка — читайте руководства производителей драйверов, батарей и инструментов.
- Покупка
- Магазинов и цен нет — детали подбирайте по описаниям и совместимости.
- Поделки
- Без электроники — бумажные и картонные модели в статье не разбираются.
Частые ошибки
- Подключают мотор напрямую к выводу платы, а не через драйвер.
- Питают моторы и плату от одного слабого источника.
- Начинают сразу со сборки робота, не проверив плату примером Blink.
- Не настраивают вывод через
pinMode, а потом ищут ошибку в светодиоде. - Используют для ШИМ вывод, который его не поддерживает.
- Копируют пример, не заменив номера выводов на свои.
Короткий вывод
Первый робот — это не конструкция целиком, а набор отдельно проверенных узлов: плата, мотор через драйвер, датчик, питание. Пройдите по шагам: мигание, ШИМ, датчик, затем правило поведения. Скетчи берите из официальной документации и проверяйте каждый узел отдельно, прежде чем собирать всё вместе.




