Распиновка Arduino Uno: цифровые, PWM, аналоговые пины и питание
Распиновка Arduino Uno в одной таблице: цифровые пины 0–13, PWM ~3, 5, 6, 9, 10, 11, аналоговые A0–A5, Vin, 5V, 3.3V, I2C, SPI, пины прерываний и предел 20 mA на пин.
Распиновка Arduino Uno — это 32 точки подключения на чёрных гнёздах вдоль двух длинных краёв платы: 14 цифровых пинов ввода-вывода (0–13), 6 из которых умеют выдавать PWM (~3, 5, 6, 9, 10, 11), 6 аналоговых входов (A0–A5) и пины питания, которые питают плату или подают питание на другие детали (Vin, 5V, 3.3V, GND, IOREF, AREF, RESET). У каждого пина есть основная задача, но у многих есть и вторая: A4 и A5 — это ещё и шина I2C, 10–13 образуют шину SPI, 2 и 3 — пины прерываний, а 0 и 1 — последовательная линия, по которой плата общается с компьютером.
Правильный выбор пина — это разница между проектом, который работает с первого раза, и часами отладки. С таблицами из этой статьи легко понять, почему PWM на пинах 9 и 10 перестаёт работать после подключения сервопривода, почему скетч не загружается при подключённом Bluetooth-модуле и почему горстка светодиодов может перегрузить плату. В конце есть тестовый скетч, который проверяет все типы пинов сразу, пример плана распределения пинов и различия в пинах между Uno R3 и R4.

Схема пинов Arduino Uno: где какой пин?
Положи плату перед собой так, чтобы USB-разъём и гнездо питания были слева. На двух колодках вдоль верхнего края — цифровые пины; номера растут справа налево, так что крайний правый пин — 0 (RX), а крайний левый цифровой — 13. Вдоль нижнего края на левой колодке пины питания, на правой — аналоговые входы. Знак ~ (тильда) рядом с номером означает, что пин умеет выдавать PWM. Группа штырьков 2×3 на правом краю платы — это разъём ICSP.
| Колодка | Пины (слева направо) | Назначение |
|---|---|---|
| Сверху слева (10 пинов) | SCL, SDA, AREF, GND, 13, 12, ~11, ~10, ~9, 8 | Копия I2C, аналоговый опорный вход, SPI и цифровые пины |
| Сверху справа (8 пинов) | 7, ~6, ~5, 4, ~3, 2, TX→1, RX←0 | Цифровые пины, пины прерываний и последовательная линия |
| Снизу слева (8 пинов) | Не используется (NC), IOREF, RESET, 3.3V, 5V, GND, GND, Vin | Пины питания |
| Снизу справа (6 пинов) | A0, A1, A2, A3, A4, A5 | Аналоговые входы (A4/A5 — ещё и I2C) |
| Правый край (2×3) | 1 MISO, 2 5V, 3 SCK, 4 MOSI, 5 RESET, 6 GND | Разъём программирования ICSP |
| Параметр | Arduino Uno R3 |
|---|---|
| Микроконтроллер | ATmega328P, 16 MHz |
| Рабочее (логическое) напряжение | 5 V |
| Входное напряжение (гнездо / Vin) | Рекомендуется 7–12 V, предел 6–20 V |
| Цифровые входы-выходы | 14 пинов (D0–D13) |
| Выход PWM | 6 пинов: 3, 5, 6, 9, 10, 11 |
| Аналоговый вход | 6 пинов (A0–A5), 10 бит (0–1023) |
| Ток на пин | Рекомендуется 20 mA, абсолютный максимум 40 mA |
| Суммарный ток (VCC/GND) | 200 mA |
| Ток пина 3.3V | Максимум 50 mA |
| Память | 32 КБ флеш-памяти (0,5 КБ загрузчик), 2 КБ SRAM, 1 КБ EEPROM |
Большая таблица пинов: D0–D13 и A0–A5
| Пин | Порт | Основная функция | Дополнительная функция | Примечание |
|---|---|---|---|---|
| D0 (RX) | PD0 | Цифровой ввод-вывод | UART RX (порт Serial) | Подключён к USB-UART-преобразователю, лучше не занимать |
| D1 (TX) | PD1 | Цифровой ввод-вывод | UART TX (порт Serial) | Подключён к USB-UART-преобразователю, лучше не занимать |
| D2 | PD2 | Цифровой ввод-вывод | Внешнее прерывание INT0 | Кнопки, энкодеры, подсчёт оборотов |
| D3 ~ | PD3 | Цифровой ввод-вывод, PWM 490 Hz | Внешнее прерывание INT1, таймер Timer2 | PWM сбивается, пока играет tone() |
| D4 | PD4 | Цифровой ввод-вывод | - | Без доп. функций, свободен |
| D5 ~ | PD5 | Цифровой ввод-вывод, PWM 980 Hz | Таймер Timer0 | Тот же таймер, что у millis() |
| D6 ~ | PD6 | Цифровой ввод-вывод, PWM 980 Hz | Таймер Timer0 | Тот же таймер, что у millis() |
| D7 | PD7 | Цифровой ввод-вывод | - | Без доп. функций, свободен |
| D8 | PB0 | Цифровой ввод-вывод | - | Без доп. функций, свободен |
| D9 ~ | PB1 | Цифровой ввод-вывод, PWM 490 Hz | Таймер Timer1 | Библиотека Servo отключает его PWM |
| D10 ~ | PB2 | Цифровой ввод-вывод, PWM 490 Hz | SPI SS, таймер Timer1 | При работе с SPI должен оставаться выходом |
| D11 ~ | PB3 | Цифровой ввод-вывод, PWM 490 Hz | SPI MOSI, таймер Timer2 | Есть и на разъёме ICSP |
| D12 | PB4 | Цифровой ввод-вывод | Линия SPI MISO | Есть и на разъёме ICSP |
| D13 | PB5 | Цифровой ввод-вывод | Линия SPI SCK | На этом пине встроенный светодиод L |
| A0 | PC0 | Аналоговый вход | Цифровой 14 | - |
| A1 | PC1 | Аналоговый вход | Цифровой 15 | - |
| A2 | PC2 | Аналоговый вход | Цифровой 16 | - |
| A3 | PC3 | Аналоговый вход | Цифровой 17 | - |
| A4 | PC4 | Аналоговый вход | I2C SDA, цифровой 18 | Пока используется I2C, аналоговые измерения недоступны |
| A5 | PC5 | Аналоговый вход | I2C SCL, цифровой 19 | Пока используется I2C, аналоговые измерения недоступны |
Как работают цифровые пины (0–13)?
Каждый цифровой пин настраивается как вход или выход функцией pinMode(). В режиме выхода digitalWrite(pin, HIGH) поднимает пин примерно до 5 V, а LOW опускает до 0 V. В режиме входа digitalRead() сравнивает напряжение с порогом: у ATmega328P при питании 5 V всё выше 3,0 V — гарантированный HIGH, всё ниже 1,5 V — гарантированный LOW, а промежуток между ними не определён. Поэтому выход датчика на 3,3 V обычно читается на Uno как HIGH; но выход Uno на 5 V нельзя подавать прямо на вход модуля на 3,3 V — между ними нужен преобразователь логических уровней.
Входной пин, ни к чему не подключённый, «висит в воздухе» и читает случайные HIGH и LOW, даже если просто поднести руку. Решение — притянуть пин резистором к определённому уровню: pinMode(pin, INPUT_PULLUP) включает резистор 20–50 kΩ внутри чипа, а кнопка ставится между пином и GND. Подробности — в статье Как подключить кнопку к Arduino. Пин 13 соединён со встроенным светодиодом L; на оригинальной R3 этот светодиод управляется через буфер на операционном усилителе, так что использовать пин как вход можно без проблем, но на некоторых клонах светодиод и его резистор висят прямо на пине и могут мешать чтению кнопки со встроенной подтяжкой.
Пины PWM (~3, 5, 6, 9, 10, 11) и таймеры
Uno не умеет выдавать настоящий аналоговый сигнал; вместо этого шесть пинов дают PWM — меандр, который очень быстро включается и выключается. Функцией analogWrite(pin, value) задаётся, какую часть периода сигнал включён, от 0 до 255: 0 — полностью выключен, 127 — примерно половина, 255 — полностью включён. Так управляют яркостью светодиода, скоростью мотора и вентилятора. Шесть пинов PWM попарно привязаны к трём аппаратным таймерам, и именно отсюда конфликты с некоторыми библиотеками. Идея PWM и расчёт коэффициента заполнения объяснены в статье Что такое PWM?
| Таймер | Пины PWM | Частота | Кто использует этот таймер? |
|---|---|---|---|
| Timer0 (8 бит) | 5, 6 | Около 980 Hz | millis(), delay() и micros() |
| Timer1 (16 бит) | 9, 10 | Около 490 Hz | Библиотека Servo |
| Timer2 (8 бит) | 3, 11 | Около 490 Hz | tone() и библиотеки вроде IRremote |
Аналоговые пины (A0–A5) и AREF
Аналоговые пины измеряют напряжение от 0 до 5 V с разрешением 10 бит, а analogRead() возвращает число от 0 до 1023. Один шаг — около 4,9 mV; чтобы перевести число в вольты, используй напряжение = значение × 5.0 / 1023, так что показание 512 означает примерно 2,5 V. Все шесть пинов по очереди используют один АЦП, а одно измерение занимает около 100 µs, что даёт примерно 10 000 измерений в секунду. Для точных результатов выходное сопротивление датчика не должно превышать 10 kΩ; если оно больше, измерения двух пинов подряд могут влиять друг на друга, и помогает отбросить первое измерение и взять второе. Чтобы измерять напряжения выше 5 V, подбери резисторы в калькуляторе делителя напряжения.
Пин AREF позволяет изменить верхнюю границу аналогового измерения. analogReference(DEFAULT) использует 5 V, analogReference(INTERNAL) — внутренний опорный источник чипа 1,1 V, а analogReference(EXTERNAL) — напряжение, поданное на пин AREF (0–5 V), как верх диапазона. С датчиком, который выдаёт 0–1 V, опорное 1,1 V уменьшает шаг примерно до 1,1 mV и делает измерение примерно в 4,5 раза точнее. К этим пинам подключают потенциометры, фоторезисторы и датчики влажности почвы; подробности аналого-цифрового преобразования — в статье об АЦП, а практический пример — в статье о потенциометре.
Пины питания: Vin, 5V, 3.3V, GND, IOREF и RESET
| Пин | Что делает | Пределы и предостережения |
|---|---|---|
| Vin | Выдаёт напряжение с гнезда питания или питает плату от 7–12 V | Минует защитный диод от переполюсовки, следи за полярностью |
| 5V | Выход 5 V от стабилизатора или USB | Предохранитель 500 mA на USB; подавать только стабилизированные 5 V |
| 3.3V | Выход 3,3 V от встроенного стабилизатора | Максимум 50 mA; для небольших модулей вроде RC522 |
| GND | Общая земля (2 снизу, 1 сверху) | Сюда должен приходить GND каждого внешнего источника |
| IOREF | Сообщает шилдам логическое напряжение платы | На Uno соединён с 5V, не для питания |
| RESET | Перезапускает плату, если притянуть к LOW | Его используют кнопки сброса на шилдах |
| AREF | Внешний опорный вход для аналоговых измерений | 0–5 V; сначала вызови analogReference(EXTERNAL) |
| NC (пин без подписи) | На R3 зарезервирован на будущее | Ни к чему не подключён |
Uno можно питать тремя способами. По USB плата берёт 5 V прямо от компьютера, а порт компьютера защищает самовосстанавливающийся предохранитель на 500 mA. Если подать 7–12 V через гнездо питания или Vin, встроенный стабилизатор понижает их до 5 V; если подключено и то и другое, плата автоматически переходит на внешний источник, как только Vin поднимается выше примерно 6,6 V. Стабилизатор превращает лишнее напряжение в тепло, поэтому при входе 12 V ток в несколько сотен mA с пина 5V быстро его нагревает. Самый здоровый подход — питать нагрузки вроде сервоприводов, моторов и светодиодных лент от отдельного источника и соединять только GND. Батарею и время работы поможет выбрать калькулятор времени работы от батареи, а обо всех способах питания читай в статье Как питать Arduino.
Почему пины 0 и 1 лучше не занимать?
Пины 0 (RX) и 1 (TX) — единственный аппаратный последовательный порт ATmega328P, и на плате они через резисторы 1 kΩ соединены с микросхемой USB-UART-преобразователя (ATmega16U2). Компьютер использует эти два пина при загрузке кода и при отправке текста в монитор порта. Если к пину 0 подключена линия TX Bluetooth-модуля или любой другой сигнал, два источника борются за одну линию, и загрузка останавливается с ошибкой avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00 (нет синхронизации). Кроме того, пин 1 быстро переключается при каждом вызове Serial.print(), так что подключённые к нему светодиод или реле срабатывают случайно.
Поэтому не занимай 0 и 1, пока не закончатся другие пины. Если нужно подключить последовательный модуль, например HC-05, GPS или MP3-плеер, библиотека SoftwareSerial создаёт второй последовательный порт на двух других пинах. Скетч ниже подключает модуль к пинам 8 (RX) и 7 (TX); он передаёт модулю всё, что вводишь в мониторе порта, а компьютеру — всё, что присылает модуль. С модулями на логике 3,3 V, такими как HC-05, подключай выход TX Uno (пин 7) к пину RX модуля через делитель напряжения. Все способы решить проблемы с загрузкой — в статье Код не загружается в Arduino, а логика последовательной связи — в статье Последовательная связь UART.
1#include <SoftwareSerial.h>
2
3SoftwareSerial moduleSerial(8, 7); // RX = 8, TX = 7; 0 ve 1 boş kalır / 0 and 1 stay free
4
5void setup() {
6 Serial.begin(9600); // USB üzerinden bilgisayar / computer over USB
7 moduleSerial.begin(9600); // HC-05 veri modu hızı / HC-05 data mode baud rate
8 Serial.println(F("Seri kopru hazir / Serial bridge ready"));
9}
10
11void loop() {
12 if (moduleSerial.available()) {
13 Serial.write(moduleSerial.read()); // modülden bilgisayara / module to computer
14 }
15 if (Serial.available()) {
16 moduleSerial.write(Serial.read()); // bilgisayardan modüle / computer to module
17 }
18}Пины связи: I2C (A4/A5), SPI (10–13) и пины прерываний (2, 3)
I2C позволяет подключить десятки устройств к одной шине всего по двум проводам (SDA и SCL); его используют LCD-дисплеи, OLED, модули часов RTC и датчики вроде BME280. На Uno SDA = A4, а SCL = A5. На платах R3 пины SDA и SCL рядом с AREF — не отдельная шина, они внутри соединены с A4 и A5, поэтому пока используется I2C, брать A4 и A5 для аналоговых измерений нельзя. Библиотека Wire по умолчанию работает на 100 kHz, а через Wire.setClock(400000) можно поднять частоту до 400 kHz. Адреса, подтягивающие резисторы и скетч I2C-сканера разобраны в статье Что такое I2C?, а практический пример — в статье Дисплей I2C LCD.
SPI быстрее, но требует больше проводов: MOSI = 11, MISO = 12, SCK = 13 и SS (CS) = 10. SPI используют модули SD-карт, RFID-считыватели и TFT-дисплеи. Несколько устройств могут делить шину: MOSI, MISO и SCK общие, а у каждого устройства свой пин CS. Важная деталь: пока SPI работает в режиме ведущего, пин 10 должен оставаться выходом; если сделать пин 10 входом и его притянет к LOW, ATmega328P сам переключится в режим ведомого, и SPI остановится. MISO, MOSI и SCK есть и на разъёме ICSP, и некоторые шилды берут SPI оттуда. Подробнее — в статьях Что такое SPI? и RFID RC522.
Прерывание позволяет мгновенно поймать изменение на пине, чем бы ни был занят loop() в этот момент. На Uno внешние прерывания есть только на пинах 2 (INT0) и 3 (INT1): пишется attachInterrupt(digitalPinToInterrupt(2), function, FALLING), а режим срабатывания может быть LOW, CHANGE, RISING или FALLING. На эти пины ставят энкодеры, датчики оборотов, датчики расхода воды и кнопки, нажатие которых нельзя пропустить. У остальных пинов тоже есть «прерывания по изменению пина» (PCINT), но пины одного порта делят одну функцию прерывания, и коду приходится выяснять, какой именно пин изменился. Правила и примеры — в статье Прерывания в Arduino.
| Функция | Arduino Uno | ESP32 (DevKit) | Raspberry Pi Pico |
|---|---|---|---|
| I2C SDA / SCL | A4 / A5 | GPIO 21 / 22 | GP4 / GP5 |
| SPI MOSI / MISO / SCK / CS | 11 / 12 / 13 / 10 | GPIO 23 / 19 / 18 / 5 | GP19 / GP16 / GP18 / GP17 |
| UART TX / RX | 1 / 0 | GPIO 1 / 3 (подключены к USB) | GP0 / GP1 |
| Внешнее прерывание | Только 2 и 3 | Все GPIO | Все GPIO |
| PWM | 6 пинов | Почти все пины, способные работать на выход | Все GPIO |
| Аналоговый вход | 6 пинов, 10 бит | ADC1: GPIO 32–39, 12 бит | GP26, GP27, GP28; 12 бит |
| Логический уровень | 5 V | 3,3 V (не выдерживает 5 V) | 3,3 V (не выдерживает 5 V) |
| Ток на пин | 20 mA (максимум 40 mA) | Рекомендуется около 20 mA | 4 mA по умолчанию, максимум 12 mA |
При переходе на ESP32 или Pico главное отличие — напряжение: обе платы работают на 3,3 V, и их пины не выдерживают 5 V, поэтому модулям на 5 V, которые на Uno подключаются напрямую, может понадобиться преобразователь уровней. Зато у этих плат прерывания и PWM есть почти на каждом пине, а шины I2C и SPI можно перенести на другие пины. Сравнение плат — в статье Arduino Uno или ESP32, карты пинов — в утилите распиновки, а сами платы описаны в статьях Что такое ESP32? и Что такое Raspberry Pi Pico?
Для чего нужен разъём ICSP?
ICSP (In-Circuit Serial Programming, внутрисхемное программирование) — разъём 2×3, через который микроконтроллер программируют напрямую по линиям SPI, без USB и загрузчика. ICSP на правом краю платы относится к ATmega328P, а маленький ICSP1 рядом с USB-разъёмом — к микросхеме USB-UART (ATmega16U2). В обычной работе его не трогают, но ICSP нужен, когда загрузчик повреждён, когда записываешь загрузчик в новый ATmega328P или загружаешь код программатором вроде USBasp. Если превратить вторую Uno в программатор с помощью примера ArduinoISP, пины 10, 11, 12 и 13 программатора идут к линиям RESET, MOSI, MISO и SCK целевой платы, а конденсатор 10 µF между RESET и GND на Uno-программаторе не даёт ей автоматически сбрасываться. Чтобы понять, не повреждена ли плата, загляни в статью Сгорел ли мой Arduino?
| Пин ICSP | Сигнал | Аналог на Uno |
|---|---|---|
| 1 | MISO | D12 |
| 2 | VCC (+5 V) | 5V |
| 3 | SCK | D13 |
| 4 | MOSI | D11 |
| 5 | RESET | RESET |
| 6 | GND | GND |
20 mA на пин, 200 mA всего: пределы тока
Безопасный ток пина Uno — не больше 20 mA. Значение 40 mA из даташита ATmega328P — это абсолютный максимум, за которым чип может необратимо повредиться, а не рабочее значение. Суммарный ток через пины VCC и GND чипа не должен превышать 200 mA. Даташит ещё и делит пины на группы: при отдаче тока (HIGH) D0–D4 вместе с A0–A5 и D5–D13 между собой должны оставаться ниже 150 mA каждая; при приёме тока (LOW) группы D0–D4, D5–D13 и A0–A5 — каждая ниже 100 mA. Если питать красный светодиод от 5 V через резистор 220 Ω, ток равен (5 − 2) / 220 ≈ 13,6 mA. Десять одновременно горящих светодиодов дают 136 mA; это меньше 200 mA, но если все они в одной группе, получается очень близко к пределу группы в 150 mA. Если светодиоды подключены так, что горят при LOW на пине (резистор от 5V к пину), и большинство из них в одной группе, предел 100 mA превышается. Распредели светодиоды по группам или увеличь резистор до 330–470 Ω. Нужный резистор найдёшь в калькуляторе резистора для светодиода или в калькуляторе закона Ома.
- Моторы: даже небольшой DC-мотор потребляет сотни mA и создаёт выбросы напряжения; используй драйвер мотора вроде L298N или транзистор.
- Катушки реле: катушка реле на 5 V потребляет около 70–90 mA; используй модуль реле с транзистором и диодом.
- Сервоприводы: сигнальный провод можно подключить к пину, но питание сервопривода должно идти от отдельного источника, а не от пина 5V; подробности в статье о сервоприводе.
- Светодиодные ленты и мощные светодиоды: лентам на 12 V и светодиодам на 1 W нужен MOSFET с логическим уровнем управления.
- Короткие замыкания: если соединить выход в состоянии HIGH прямо с GND, через пин пойдёт намного больше 40 mA, и он выйдет из строя навсегда.
Тестовый скетч: цифровые, PWM, аналоговые пины и прерывания вместе
- Подключи светодиод к пину 9 через резистор 220 Ω: длинная ножка к резистору, короткая к GND.
- Крайние выводы потенциометра подключи к 5V и GND, а средний — к A0.
- Кнопку поставь между пином 2 и GND; отдельный резистор не нужен, используется встроенная подтяжка.
- Загрузи скетч, открой монитор порта и выставь скорость 9600 бод.
- Покрути потенциометр: яркость светодиода на пине 9 меняется, встроенный светодиод L (пин 13) загорается, когда напряжение превышает 2,5 V, а счётчик увеличивается на единицу при каждом нажатии кнопки.
1const byte BUTTON_PIN = 2; // kesme pini INT0 / interrupt pin INT0
2const byte PWM_LED = 9; // ~9: PWM çıkışı / PWM output
3const byte STATUS_LED = 13; // kart üzerindeki L LED'i / onboard L LED
4const byte POT_PIN = A0; // analog giriş / analog input
5
6volatile unsigned int pressCount = 0; // ISR içinde değişir / changed inside the ISR
7
8void onButton() {
9 static unsigned long lastPressMs = 0;
10 unsigned long now = millis();
11 if (now - lastPressMs > 50) { // 50 ms sıçrama filtresi / 50 ms debounce
12 pressCount++;
13 lastPressMs = now;
14 }
15}
16
17void setup() {
18 Serial.begin(9600); // 0 ve 1 numaralı pinleri kullanır / uses pins 0 and 1
19 pinMode(STATUS_LED, OUTPUT);
20 pinMode(PWM_LED, OUTPUT);
21 pinMode(BUTTON_PIN, INPUT_PULLUP); // dahili pull-up direnci / internal pull-up resistor
22 attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), onButton, FALLING);
23}
24
25void loop() {
26 int raw = analogRead(POT_PIN); // 0-1023 arası ham değer / raw value 0-1023
27 float volts = raw * 5.0 / 1023.0; // volta çevir / convert to volts
28 analogWrite(PWM_LED, raw / 4); // 0-255 arası PWM / PWM from 0 to 255
29 digitalWrite(STATUS_LED, volts > 2.5 ? HIGH : LOW); // 2,5 V eşiği / 2.5 V threshold
30
31 noInterrupts(); // sayacı güvenle kopyala / copy the counter safely
32 unsigned int presses = pressCount;
33 interrupts();
34
35 Serial.print(F("A0: "));
36 Serial.print(raw);
37 Serial.print(F(" V: "));
38 Serial.print(volts, 2);
39 Serial.print(F(" Buton / Button: "));
40 Serial.println(presses);
41 delay(200);
42}Скетч одновременно использует четыре типа пинов Uno. analogRead(A0) читает значение от 0 до 1023, а raw / 4 сжимает его до диапазона 0–255, который ожидает analogWrite(). Чтобы не считать дребезг контактов, функция прерывания игнорирует сигналы, пришедшие меньше чем через 50 мс после последнего нажатия. Счётчик, который меняется в прерывании, объявлен как volatile, а loop() копирует его, ненадолго приостановив прерывания: 8-битная Uno читает 16-битное число в два приёма, и прерывание между ними могло бы дать неверное значение. Пины 0 и 1 заняты только Serial, поэтому к ним больше ничего не подключено.
Пример плана пинов: какую деталь на какой пин?
Если в проекте с несколькими деталями раскидывать пины наугад, начнутся конфликты. Сначала расставь детали с особыми ролями (I2C, SPI, прерывания, PWM) на их пины, а потом раздай простые цифровые задачи свободным пинам. Ниже пример плана для дверного замка с RFID-картой: считыватель RC522, I2C LCD, сервопривод, зуммер, кнопка и два светодиода. Поскольку сервопривод и tone() используются вместе, PWM на 3, 9, 10 и 11 и так недоступен, и план это учитывает.
| Деталь | Пин Uno | Почему этот пин? |
|---|---|---|
| RC522 SDA (SS) | 10 | Пин SS шины SPI; должен оставаться выходом |
| RC522 SCK / MOSI / MISO | 13 / 11 / 12 | Пины аппаратного SPI изменить нельзя |
| RC522 RST | 9 | Подойдёт любой цифровой пин; PWM на 9 из-за сервопривода всё равно недоступен |
| RC522 VCC | 3.3V | Модуль работает от 3,3 V, и его ток ниже предела 50 mA |
| I2C LCD SDA / SCL | A4 / A5 | Единственная шина I2C у Uno |
| Сигнал сервопривода | 6 | Библиотека Servo работает на любом пине; питание от внешних 5 V |
| Зуммер | 8 | tone() работает на любом пине, так что пин PWM не тратится |
| Кнопка | 2 | Пин прерывания; с INPUT_PULLUP резистор не нужен |
| Зелёный / красный светодиод | 4 / 7 | Простые цифровые пины без доп. функций |
| Оставлены свободными | 0, 1, 3, 5, A0–A3 | Последовательная линия свободна; 3 для второго прерывания, 5 для PWM, A0–A3 для датчиков |
Различия в пинах Arduino Uno R3 и R4
| Параметр | Uno R3 | Uno R4 (Minima / WiFi) |
|---|---|---|
| Микроконтроллер | ATmega328P, 8 бит, 16 MHz | Renesas RA4M1, 32 бита, 48 MHz |
| Расположение пинов | Стандартное для Uno | То же; шилды подходят |
| Ток на пин | 20 mA | 8 mA |
| Аналоговое разрешение | 10 бит | 10 бит по умолчанию, до 14 бит |
| Настоящий аналоговый выход (ЦАП) | Нет | 12-битный ЦАП на A0 |
| Пины 0 и 1 | Общие с USB (Serial) | Отдельно от USB (Serial1) |
| Диапазон Vin | Рекомендуется 7–12 V | 6–24 V |
| USB | USB-B, через ATmega16U2 | USB-C; на Minima напрямую к процессору, на WiFi через мост ESP32-S3 |
Короче говоря, номера и функции пинов на R4 остаются прежними (PWM ~3, 5, 6, 9, 10, 11; I2C A4/A5; SPI 10–13; прерывания 2, 3), но ток на пин падает до 8 mA. Светодиоду, который на R3 питался прямо от пина, на R4 нужен резистор побольше (например, 1 kΩ примерно на 3 mA) или транзистор. Подробное сравнение — в статье Arduino Uno R4. Если ищешь плату поменьше, помогут статьи Распиновка Arduino Nano и Какой Arduino купить?
Частые ошибки и как их исправить
| Симптом | Причина | Решение |
|---|---|---|
| Скетч не загружается, ошибка «not in sync» | К пину 0 или 1 подключён модуль | Отключай модуль на время загрузки или перенеси его на другие пины через SoftwareSerial |
| После добавления сервопривода яркость светодиода не меняется | Библиотека Servo отключила PWM на 9 и 10 | Перенеси светодиод на 3, 5, 6 или 11 |
| Скорость мотора сбивается, пока играет зуммер | tone() использует Timer2, который влияет на 3 и 11 | Перенеси PWM на 5, 6, 9 или 10 |
| Аналоговое значение само уплывает | Пин висит в воздухе или сопротивление источника слишком велико | Надёжно подключи датчик, при необходимости читай дважды |
| Кнопка будто нажимается сама | Входной пин висит в воздухе | Используй INPUT_PULLUP или добавь резистор 10 kΩ |
| При подключённом I2C-дисплее A4/A5 читают неверные значения | A4/A5 общие с шиной I2C | Подключи аналоговый датчик к A0–A3 |
| SPI-модуль не отвечает | Пин 10 сделан входом или неверный CS | Держи пин 10 выходом, дай каждому устройству свой CS |
| Плата греется или сама перезагружается | С пинов или пина 5V берётся слишком большой ток | Питай нагрузки от отдельного источника и соедини GND |
Когда пины Arduino Uno понятны, запоминать, куда подключается каждая деталь, не нужно: смотришь, что нужно детали, и самостоятельно выбираешь подходящий пин. Если хочешь ещё раз пройтись по основам, начни со статьи Что такое Arduino? В приложении BlueGrays есть проекты вроде зажигания светодиода, чтения кнопки, измерения света фоторезистором, RGB-светодиода с PWM, I2C LCD, RFID и двух Arduino, общающихся по последовательной линии, — каждый пошагово, со схемами, которые показывают, почему выбран каждый пин, и с готовым кодом.
Частые вопросы
Сколько пинов у Arduino Uno?
У Arduino Uno R3 14 цифровых пинов ввода-вывода (0–13) и 6 аналоговых входов (A0–A5); поскольку аналоговые пины можно использовать и как цифровые, всего получается 20 сигнальных пинов. Шесть цифровых пинов умеют PWM. Кроме того, есть пины питания и управления: Vin, 5V, 3.3V, GND, IOREF, AREF и RESET, а также 6-контактный разъём ICSP.
Какие пины Arduino Uno поддерживают PWM?
Пины PWM — 3, 5, 6, 9, 10 и 11, на плате рядом с их номерами стоит знак ~. Пины 5 и 6 работают на частоте около 980 Hz, остальные — около 490 Hz. На PWM пинов 9 и 10 влияет библиотека Servo, а на PWM пинов 3 и 11 — функция tone().
Можно ли использовать аналоговые пины Arduino как цифровые?
Да. На Uno пины A0–A5 работают как обычные цифровые с pinMode, digitalWrite и digitalRead и соответствуют номерам 14–19. Так что к A0 можно подключить светодиод, а к A3 — кнопку. Единственное исключение: пока используется I2C, A4 и A5 заняты шиной.
Какой ток может отдать пин Arduino Uno?
С одного пина безопасно брать 20 mA; 40 mA — абсолютный максимум, превышение может необратимо повредить пин. Суммарный ток всех пинов не должен превышать 200 mA. Поэтому светодиоды подключают через резисторы, а нагрузками вроде моторов и реле управляют через транзистор, MOSFET или модуль драйвера.
Можно ли использовать пины 0 и 1 на Arduino Uno?
Можно, но не рекомендуется. Эти пины подключены к микросхеме USB-UART, и компьютер использует эту линию при загрузке кода и работе монитора порта. С модулем на пине 0 загрузка может сорваться с ошибкой «not in sync», поэтому занимай эти пины в последнюю очередь или переходи на другие пины через SoftwareSerial.
Что такое пины SDA и SCL на Arduino Uno?
На Uno линия SDA шины I2C — это пин A4, а SCL — пин A5. На платах R3 рядом с AREF есть ещё два пина с подписями SDA и SCL, но они внутри соединены с A4 и A5 и не являются отдельной шиной. На ESP32 пины I2C по умолчанию — GPIO 21 и 22; на Raspberry Pi Pico I2C можно перенести на многие пины, и самый частый выбор — GP4 (SDA) и GP5 (SCL).
Что собрать после прочтения
Все проекты
Мигающий светодиод
Самое первое «привет» в электронике: включение и выключение одного светодиода. Arduino включает и выключает светодиод через короткие промежутки, поэтому свет быстро мигает. Ты самым простым способом в

Управление светодиодом кнопкой (удержание)
Как дверной звонок: свет горит, пока ты нажимаешь, и гаснет, когда отпускаешь. Arduino всё время слушает кнопку; пока она нажата, светодиод горит, а как только ты убираешь палец, он гаснет. Эта просте

Измерение освещённости с LDR
Хочешь увидеть яркость своей комнаты в виде числа? LDR — маленькая деталь, реагирующая на свет, — измеряет освещённость вокруг, а Arduino каждые полсекунды выводит значение на экран компьютера. Закрой

Измерение расстояния HC-SR04 (вывод в порт)
Датчик HC-SR04 работает совсем как летучая мышь, которая находит дорогу в темноте: он посылает звук, которого ты не слышишь, слушает эхо и измеряет, насколько далеко предмет перед ним. Arduino каждые

Плавная смена цвета RGB-светодиода
Один RGB-светодиод медленно переходит от красного к зелёному, от зелёного к синему и обратно к красному, без остановки прокручивая радугу. Каждый переход длится около двух с половиной секунд, а жёлтый

LCD-экран с I2C
Дай своему Arduino собственный экран и заставь его написать первое сообщение. Двухстрочный LCD-экран подключается всего несколькими проводами; в верхней строке появляется приветствие, затем второе соо

Чтение значения RFID
В брелоке от подъезда или карте доступа спрятан секретный идентификационный номер, и этот проект его читает. Поднеси карту к считывателю RFID, и Arduino выведет номер карты на экран компьютера. Первый

Односторонняя связь между двумя Arduino
Ты заставляешь две Arduino разговаривать по одному проводу: нажми кнопку на одной, и на другой загорится светодиод, нажми снова — погаснет. Плата-передатчик сообщает о нажатии кнопки коротким сообщени
Другие статьи
Приложение BlueGrays
Собери эту схему шаг за шагом в телефоне
Схема подключения, код и список деталей на одном экране. 200+ проектов на Arduino, ESP32 и Pico готовы к сборке.
Наведи камеру телефона
Наведи камеру на код — откроется магазин приложений на телефоне.
или открыть магазин

