Arduino программируют в Arduino IDE: это бесплатная среда, где пишут код на упрощённом C++ и одной кнопкой заливают его в плату. Порядок такой: установить IDE, подключить плату по USB, выбрать её и порт в меню «Инструменты», написать скетч из функций setup() и loop() и нажать «Загрузить на плату».
Одна поправка для России: сайт arduino.cc сейчас отсюда не открывается, а Arduino IDE 2 при запуске может зависнуть. Ниже разберём, какую версию ставить и откуда её взять, соберём первый скетч и ночник, который сам включается в темноте. Если Arduino для вас первый шаг в профессию, загляните в план как стать робототехником с нуля.
Что понадобится для первого скетча

Набор минимальный. Для старта удобнее всего Arduino Uno или её клон: у неё встроенный светодиод на 13-м выводе, и первый скетч работает без единого провода.
| Что | Зачем | На что обратить внимание |
|---|---|---|
| Плата Arduino Uno или Nano | На ней выполняется программа | У клонов часто стоит USB-чип CH340, ему нужен драйвер |
| USB-кабель | Питание и загрузка скетча | Кабель должен передавать данные, а не только заряжать |
| Компьютер с Windows, macOS или Linux | Здесь пишут и компилируют код | IDE 2 работает только на 64-битных системах |
| Arduino IDE | Редактор, компилятор и загрузчик в одном окне | Версию выбираем в следующем разделе |
| Датчик освещённости (для ночника) | Мини-проект в конце статьи | Модуль с выходом AO, три провода |
Платы пока нет? Код можно запускать в браузерном симуляторе Wokwi: он открывается без регистрации и показывает виртуальную Uno с мигающим светодиодом и монитором порта. Все скриншоты в этой статье сделаны в нём.
Курсы, где Arduino разбирают с наставником, собраны в каталоге на странице курсов по Arduino: там видно программу, длительность и цену каждого.
Как установить Arduino IDE в России
Сейчас живут две ветки: классическая 1.8.19 (вышла 21 декабря 2021 года и больше не обновляется) и 2.3.10 от 9 июня 2026 года. Даты взяты со страницы релизов Arduino IDE на GitHub, она из России открывается.
С официальным сайтом сложнее. 11 октября 2026 года мы проверили его с сервера в России: arduino.cc, docs.arduino.cc и downloads.arduino.cc отвечают кодом 403 и страницей блокировки Cloudflare. С зарубежного адреса те же ссылки открываются нормально, то есть закрыт именно российский трафик.
Почему это важно: IDE 2 при запуске скачивает списки плат и библиотек как раз с downloads.arduino.cc. Без ответа сервера программа может бесконечно висеть на заставке.
Какую версию выбрать
| Версия | Плюсы | Минусы | Кому подойдёт |
|---|---|---|---|
| Arduino IDE 1.8.19 | Запускается в России без настроек, поддержка AVR-плат (Uno, Nano, Mega) встроена | Старый редактор без автодополнения, обновлений не будет | Новичку с Uno или Nano |
| Arduino IDE 2.3.10 | Подсказки кода, тёмная тема, отладчик для поддерживаемых плат | Из России при запуске нужно настроить зеркало каталогов | Тем, кто готов один раз выполнить скрипт |
Для первого знакомства берите 1.8.19. Перейти на вторую версию можно позже: скетчи у обеих одинаковые, файлы .ino открываются в любой.
Установка по шагам
- Скачайте установщик. Обе версии лежат на странице Arduino IDE у Амперки: магазин хранит копии дистрибутивов и заявляет, что они идентичны официальным. Версия 2.3.10 есть и на GitHub.
- Windows: запустите установщик и, если он предложит поставить драйверы, согласитесь. Для флешки или компьютера без прав администратора есть ZIP-архив.
- macOS: распакуйте архив и перенесите Arduino в «Программы». Для 2.x выбирайте сборку под свой процессор: Intel или Apple M.
- Linux: для 1.8.19 распакуйте архив и запустите
./install.sh(у 2.x вместо него AppImage) и добавьте себя в группуdialoutкомандойsudo usermod -a -G dialout $USER, иначе порт платы будет недоступен. - Если поставили IDE 2 и она висит при запуске, закройте её и выполните скрипт для своей системы со страницы Амперки. Он прописывает в настройках зеркало списка плат и кладёт рядом каталог библиотек, после этого программа стартует.
Как включить русский язык
IDE сама берёт язык системы. Если интерфейс открылся на английском:
- в 1.8.19: «Файл» → «Настройки» → список «Язык редактора»;
- в 2.x: «Файл» → «Параметры» → выпадающий список языка.
После выбора перезапустите программу. Учтите, что переводится только интерфейс: сообщения компилятора остаются на английском, поэтому разбор частых ошибок ниже мы дали с оригинальным текстом.
Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединитьсяПервая программа: мигаем светодиодом
Программа для Arduino называется скетч. Любой скетч состоит минимум из двух функций, и IDE создаёт их сама, когда вы открываете новый файл:
void setup() {
// этот код выполнится один раз после включения платы
}
void loop() {
// а этот будет повторяться, пока на плату подано питание
}
В setup() настраивают выводы и связь с компьютером. В loop() живёт вся логика устройства: плата выполняет эту функцию по кругу, снова и снова, пока её не обесточат.
Классический первый скетч мигает встроенным светодиодом. Его можно не набирать: он лежит в «Файл» → «Примеры» → «01.Basics» → «Blink», там же десятки других готовых кодов для Ардуино с комментариями. С этой мигалки начинается почти любой учебный план, в том числе путь от Arduino до разводки плат. Вот наш вариант с комментариями:
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // встроенный светодиод работает как выход
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // включить
delay(1000); // подождать 1000 мс
digitalWrite(LED_BUILTIN, LOW); // выключить
delay(1000);
}
Имя LED_BUILTIN обозначает встроенный светодиод. У Uno это вывод 13: так записано в файле описания выводов платы в ядре ArduinoCore-avr.
Как загрузить скетч в плату
- Подключите плату кабелем. На ней загорится индикатор питания ON.
- «Инструменты» → «Плата» → выберите свою модель, например Arduino Uno.
- «Инструменты» → «Порт» → выберите порт с платой. В Windows это COM3, COM4 и так далее, в macOS и Linux ищите строку с
usbserial,usbmodemилиttyUSB. - Нажмите «Проверить» (кнопка с галочкой). IDE скомпилирует код и покажет, сколько памяти он занял.
- Нажмите «Загрузить на плату» (стрелка вправо). После надписи «Загрузка завершена.» светодиод L начнёт мигать раз в секунду.
Под Uno этот скетч занимает 924 байта из 32 256 доступных под программу. Пустой скетч из двух функций весит 444 байта, это служебный код ядра. Памяти у Uno хватит на десятки таких программ, ограничивать начнёт скорее оперативная память на 2 048 байт.
Тот же порядок работает и для плат с Wi-Fi вроде ESP32: их добавляют в IDE через «Менеджер плат», а скетчи пишут теми же функциями. На таких платах собирают устройства умного дома, и этим уже занимаются IoT-разработчики.

Чтобы повторить это в Wokwi, откройте новый проект Arduino Uno, вставьте код во вкладку sketch.ino и нажмите зелёную кнопку запуска. Плату и порт там выбирать не нужно, симулятор собирает код на своём сервере, и на бесплатном тарифе сборка иногда ждёт в очереди.
Язык Arduino: что нужно знать новичку
Отдельного «языка Ардуино» нет. Скетч написан на C++, а IDE сама добавляет к нему #include <Arduino.h> и объявления функций. Поэтому работают обычные переменные, условия, циклы и классы, а платформу добавляет набор готовых функций ядра. Кто хочет знать язык глубже, чем нужно для мигалки, может пройти курсы по C++: всё из них переносится на Arduino.
| Функция | Что делает | Пример |
|---|---|---|
pinMode(pin, mode) |
Назначает вывод входом или выходом | pinMode(13, OUTPUT); |
digitalWrite(pin, value) |
Подаёт на вывод 5 В (HIGH) или 0 В (LOW) | digitalWrite(13, HIGH); |
digitalRead(pin) |
Читает состояние кнопки или датчика: HIGH или LOW | if (digitalRead(2) == LOW) |
analogRead(pin) |
Читает напряжение на входах A0–A5 и возвращает число от 0 до 1023 | int v = analogRead(A0); |
analogWrite(pin, value) |
Выдаёт ШИМ от 0 до 255, например для плавной яркости | analogWrite(9, 128); |
delay(ms) |
Останавливает программу на заданное число миллисекунд | delay(500); |
millis() |
Возвращает, сколько миллисекунд прошло с включения | if (millis() - t >= 1000) |
Serial.begin(), Serial.println() |
Открывают связь с компьютером и печатают в монитор порта | Serial.println(v); |
Три особенности, на которых новички теряют время:
- Регистр важен.
digitalWriteиdigitalwriteсчитаются разными именами, второго в ядре нет. intна Uno занимает 2 байта, то есть вмещает числа только от −32 768 до 32 767. Для времени изmillis()беритеunsigned long, иначе счётчик переполнится через полминуты.- ШИМ есть не на всех выводах. У Uno
analogWriteработает на 3, 5, 6, 9, 10 и 11, на остальных вывод будет просто включаться и выключаться.
Если вы уже писали на Си или C++, всё знакомо. Если нет, базу синтаксиса проще добрать на обычном компьютере: как поставить компилятор C на Windows, macOS и Linux, мы разбирали отдельно.
Мини-проект: ночник, который включается в темноте

Теперь соберём устройство, которое реагирует на мир. Связка «датчик → решение → действие» лежит в основе любого робота, от пылесоса до заводского манипулятора, и с неё начинается работа инженера-робототехника.
Понадобится модуль датчика освещённости с аналоговым выходом. Подключение три провода:
- VCC датчика → 5V на плате;
- GND датчика → GND;
- AO датчика → вход A0.
Роль лампы сыграет тот же встроенный светодиод на 13-м выводе. Внешний светодиод подключается к нему же через резистор 220 Ом.
const int SENSOR_PIN = A0; // аналоговый выход датчика освещённости
const int LED_PIN = 13; // светодиод ночника
const int THRESHOLD = 500; // порог: выше — темно, ниже — светло
void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600); // скорость монитора порта
}
void loop() {
int light = analogRead(SENSOR_PIN); // число от 0 до 1023
Serial.print("Датчик: ");
Serial.println(light);
if (light > THRESHOLD) {
digitalWrite(LED_PIN, HIGH); // темно — включаем свет
} else {
digitalWrite(LED_PIN, LOW); // светло — выключаем
}
delay(500);
}
Загрузите скетч и откройте «Инструменты» → «Монитор порта». Внизу окна выставьте скорость 9600 бод, как в Serial.begin(9600). Дважды в секунду там появится строка с показанием датчика.
В Wokwi мы прогнали скетч на двух уровнях света. При освещённости 5 люкс датчик показал 911, и светодиод L загорелся. При 500 люкс число упало до 250, и свет погас: у этого модуля чем темнее, тем больше значение.


Порог 500 подобран под конкретный модуль. У разных модулей шкала своя, а у некоторых она перевёрнута: в темноте число падает. Поэтому сначала посмотрите в мониторе порта, какие значения датчик даёт днём и с закрытой ладонью, и поставьте порог посередине.
И одна деталь про память. Этот скетч занял 2 210 байт программы и 202 байта оперативной памяти против 9 у мигалки: место ушло на буферы Serial и на строку «Датчик: ». Если обернуть её в макрос F("Датчик: "), строка переедет во флеш-память, и оперативной останется на 14 байт больше. На большом проекте с десятками надписей такая мелочь решает, влезет ли программа.
Почему delay() мешает и чем его заменить
У delay() есть недостаток: на время паузы плата глохнет. Если в ночник добавить кнопку, то при delay(1000) нажатие короче секунды плата просто пропустит.
Решение: проверять часы через millis() и выполнять действие, когда подошло время, а не ждать его.
unsigned long lastToggle = 0;
bool ledOn = false;
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if (millis() - lastToggle >= 1000) { // прошла секунда?
lastToggle = millis();
ledOn = !ledOn;
digitalWrite(LED_BUILTIN, ledOn ? HIGH : LOW);
}
// здесь можно опрашивать кнопку или датчик: плата не стоит на паузе
}
Светодиод мигает так же, раз в секунду, но loop() теперь крутится без остановок. Так пишут почти все реальные устройства, где одновременно опрашиваются датчики и что-то показывается на экране. Если хочется копнуть, как плата исполняет такой код на уровне железа, начните с обзора профессии программиста микроконтроллеров.
Как подключить библиотеку в Arduino IDE

Библиотека содержит готовый код для конкретного железа: дисплея, сервопривода, датчика температуры. Ставятся они тремя способами.
| Способ | Где в меню | Когда подходит |
|---|---|---|
| Менеджер библиотек | 1.8.19: «Скетч» → «Подключить библиотеку» → «Управлять библиотеками…»; 2.x: значок книг слева или тот же путь, пункт «Управление библиотеками…» | Поиск по названию и установка в один клик |
| Архив ZIP | «Скетч» → «Подключить библиотеку» → «Добавить .ZIP библиотеку…» | Библиотека скачана с GitHub архивом |
| Вручную | Распаковать папку в libraries внутри папки скетчей и перезапустить IDE | Когда первые два способа не сработали |
После установки библиотека подключается строкой #include в начале скетча, а её примеры появляются в «Файл» → «Примеры».
Особенность для России: каталог менеджера библиотек тоже лежит на downloads.arduino.cc, поэтому список может не загрузиться. Скрипт из раздела установки заодно кладёт копию этого каталога в папку данных Arduino15. Или скачайте архив с GitHub автора и поставьте его как ZIP.
Частые ошибки и что с ними делать
Ниже настоящие сообщения компилятора: мы специально внесли эти ошибки в скетч Blink и собрали его под Uno.
| Что видите | Причина | Что сделать |
|---|---|---|
expected ';' before '}' token |
Пропущена точка с запятой | Смотрите строку выше указанной: компилятор замечает пропуск только на следующей |
'digitalwrite' was not declared in this scope |
Опечатка или неверный регистр в имени функции | Сверьте написание, компилятор часто сам подсказывает верное в строке suggested alternative |
| Пункт «Порт» серый или в нём нет платы | Кабель только для зарядки или не стоит драйвер USB-чипа | Возьмите другой кабель; для клонов с CH340 поставьте драйвер с сайта производителя WCH |
avrdude: stk500_getsync(): not in sync |
Выбрана не та плата или процессор | Для старых клонов Nano: «Инструменты» → «Процессор» → «ATmega328P (Old Bootloader)» |
| В мониторе порта кракозябры | Скорость в окне не совпадает с Serial.begin() |
Выставьте ту же цифру, обычно 9600 или 115200 |
| IDE 2 висит на заставке | Нет ответа от downloads.arduino.cc | Скрипт с зеркалом каталогов из раздела установки или версия 1.8.19 |
Английский лог пугает только первые пару недель. Если хочется подсказок на русском, есть российская среда Trema IDE: она открывает те же файлы .ino и объясняет ошибки сборки по-русски, но версии для macOS у неё нет.
Где освоить Arduino системно
Мигалка и ночник занимают первые полчаса. Дальше начинаются датчики по протоколам I2C и SPI, прерывания, работа с памятью и пайка собственных плат, и здесь самоучители уже заметно медленнее курса с наставником, который проверит схему.
Ниже курсы, где Arduino в программе. Шире смотрите подборки по робототехнике и программированию микроконтроллеров.
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Профессия Инженер умного дома Перейти на сайт курса | 173 055 ₽ | 5082 ₽/мес. | 15 месяцев | Обзор курса | |
| Робототехника Перейти на сайт курса | 19 900 ₽ | 1658 ₽/мес. | 3 месяца | Обзор курса | |
| Преподавание робототехники в системе общего и дополнительного образования Перейти на сайт курса | 7000 ₽ | 1750 ₽/мес. | 5 недель | Обзор курса | |
| C++ для робототехников Перейти на сайт курса | 30 294 ₽ | - | 1 месяц | Обзор курса | |
| Электроника и схемотехника Перейти на сайт курса | 55 000 ₽ | - | 1 месяц | Обзор курса |
Больше программ — в полном каталоге курсов по Arduino




