
📋 목차
1. 아두이노 우노란?
아두이노 우노(Arduino Uno)는 이탈리아 Arduino 팀이 설계한 오픈소스 마이크로컨트롤러 보드입니다. ATmega328P 칩을 기반으로 하며, 전 세계에서 가장 널리 사용되는 마이크로컨트롤러 보드 중 하나입니다.
"Uno"는 이탈리아어로 "1"을 의미하며, USB 시리얼 통신 방식을 개선한 첫 번째 버전이라는 의미에서 붙여진 이름입니다. 현재 가장 많이 사용되는 버전은 R3(Revision 3)입니다.
2. 주요 스펙
| 마이크로컨트롤러 | ATmega328P |
| 동작 전압 | 5V |
| 권장 입력 전압 | 7 ~ 12V |
| 한계 입력 전압 | 6 ~ 20V |
| 디지털 I/O 핀 | 14개 (PWM 6개) |
| 아날로그 입력 핀 | 6개 (A0 ~ A5) |
| 핀당 최대 전류 | 40mA |
| 3.3V 핀 전류 | 50mA |
| 플래시 메모리 | 32KB (부트로더 0.5KB) |
| SRAM | 2KB |
| EEPROM | 1KB |
| 클록 주파수 | 16 MHz |
3. 핀맵 전체 보기
아두이노 우노 R3의 핀 구성을 정리했습니다. 핀 종류별로 색상 배지로 구분했습니다.

| 핀 | 종류 | 주요 기능 |
|---|---|---|
| IOREF, RESET, 3.3V, 5V, GND, VIN | 전원 | 전원 공급 및 기준 전압 |
| A0 ~ A3 | 아날로그 | 10비트 아날로그 입력 |
| A4 | 아날로그 I²C SDA | 아날로그 입력 + I2C 데이터 |
| A5 | 아날로그 I²C SCL | 아날로그 입력 + I2C 클록 |
| D0 (RX) | 디지털 UART RX | 시리얼 수신 |
| D1 (TX) | 디지털 UART TX | 시리얼 송신 |
| D2 | 디지털 | 외부 인터럽트 INT0 |
| D3 | 디지털 PWM~ | PWM 출력 + 외부 인터럽트 INT1 |
| D4, D7, D8 | 디지털 | 범용 디지털 I/O |
| D5, D6 | 디지털 PWM~ | PWM 출력 (약 980Hz) |
| D9 | 디지털 PWM~ | PWM 출력 (약 490Hz) |
| D10 | 디지털 PWM~ SPI SS | PWM + SPI Slave Select |
| D11 | 디지털 PWM~ SPI MOSI | PWM + SPI MOSI |
| D12 | 디지털 SPI MISO | SPI MISO |
| D13 | 디지털 SPI SCK | SPI SCK + 내장 LED (LED_BUILTIN) |
4. 전원 핀 설명
전원 관련 핀은 보드 왼쪽 상단 헤더에 모여 있습니다.
| 핀 | 설명 |
|---|---|
| IOREF | I/O 핀의 동작 전압 기준(우노: 5V). 쉴드가 보드 전압을 자동 감지하는 데 사용합니다. |
| RESET | LOW 신호를 가하면 마이크로컨트롤러를 리셋합니다. |
| 3.3V | 3.3V 출력 핀. 최대 50mA 공급 가능. 3.3V 동작 센서·모듈의 전원으로 사용합니다. |
| 5V | 5V 출력 핀. USB 또는 DC 잭에서 조정된 전압이 출력됩니다. |
| GND | 그라운드(0V). 보드에 GND 핀이 3곳 있습니다. |
| VIN | 외부 전원 입력 핀. 7~12V를 인가하면 내부 레귤레이터를 통해 보드 전체에 전원이 공급됩니다. |
5. 디지털 핀 설명 (D0 ~ D13)
총 14개의 디지털 I/O 핀(D0~D13). pinMode()로 모드 설정, digitalWrite()/digitalRead()로 제어합니다.
| 핀 | 부가 기능 | 설명 |
|---|---|---|
| D0 (RX) | UART RX | 시리얼 수신. USB 업로드·시리얼 모니터 사용 중 다른 장치 연결 시 충돌 주의. |
| D1 (TX) | UART TX | 시리얼 송신. 위와 동일하게 충돌 주의. |
| D2 | 외부 인터럽트 0 | 외부 인터럽트(INT0) 지원. 버튼, 엔코더 등 즉각 반응이 필요한 입력에 활용. |
| D3 | PWM~ 외부 인터럽트 1 | PWM 출력 + 외부 인터럽트(INT1) 동시 지원. |
| D4 | — | 범용 디지털 I/O. |
| D5 | PWM~ | PWM 출력 (약 980Hz). |
| D6 | PWM~ | PWM 출력 (약 980Hz). |
| D7 | — | 범용 디지털 I/O. |
| D8 | — | 범용 디지털 I/O. |
| D9 | PWM~ | PWM 출력 (약 490Hz). |
| D10 | PWM~ SPI SS | PWM + SPI Slave Select. |
| D11 | PWM~ SPI MOSI | PWM + SPI MOSI. |
| D12 | SPI MISO | SPI MISO. |
| D13 | SPI SCK | SPI SCK + 내장 LED(LED_BUILTIN). |
6. PWM 핀 설명
PWM(Pulse Width Modulation)은 디지털 신호로 아날로그 출력처럼 동작하게 하는 기술입니다. analogWrite(핀, 0~255)로 출력 전압을 0~5V 범위로 조절합니다.
PWM 핀: D3, D5, D6, D9, D10, D11 총 6개. D5·D6은 약 980Hz, 나머지는 약 490Hz로 동작합니다.
// PWM으로 LED 밝기를 서서히 변화시키는 예제 (Fade)
void setup() {
pinMode(9, OUTPUT); // D9: PWM 핀
}
void loop() {
for (int i = 0; i <= 255; i++) {
analogWrite(9, i); // 0 → 255: 서서히 밝아짐
delay(8);
}
for (int i = 255; i >= 0; i--) {
analogWrite(9, i); // 255 → 0: 서서히 어두워짐
delay(8);
}
}
Servo 라이브러리와 함께 사용하면 편리합니다.7. 아날로그 핀 설명 (A0 ~ A5)
총 6개의 아날로그 입력 핀(A0~A5). 내장 10비트 ADC를 통해 0~5V 신호를 0 ~ 1023의 정수값으로 변환합니다.
| 핀 | 부가 기능 | 설명 |
|---|---|---|
| A0 | 디지털 D14 겸용 | 온도 센서, 가변저항 등 연속적인 값 읽기. |
| A1 | 디지털 D15 겸용 | 아날로그 입력. |
| A2 | 디지털 D16 겸용 | 아날로그 입력. |
| A3 | 디지털 D17 겸용 | 아날로그 입력. |
| A4 | I²C SDA | 아날로그 입력 + I2C 데이터 라인. OLED, LCD, I2C 센서 연결에 사용. |
| A5 | I²C SCL | 아날로그 입력 + I2C 클록 라인. OLED, LCD, I2C 센서 연결에 사용. |
// 가변저항 값을 읽어 시리얼 모니터에 출력
void setup() {
Serial.begin(9600);
}
void loop() {
int val = analogRead(A0); // 0 ~ 1023
float voltage = val * (5.0 / 1023.0); // 전압 변환
Serial.print("값: "); Serial.print(val);
Serial.print(" 전압: "); Serial.print(voltage);
Serial.println("V");
delay(200);
}
8. 통신 핀 — UART · I2C · SPI
아두이노 우노는 세 가지 시리얼 통신 프로토콜을 하드웨어로 지원합니다.
① UART (시리얼 통신)
PC 시리얼 모니터, 블루투스 모듈(HC-05), GPS 모듈 등에 사용됩니다.
| 핀 | 기능 | 설명 |
|---|---|---|
| D0 | RX | 데이터 수신. 상대 장치의 TX에 연결. |
| D1 | TX | 데이터 송신. 상대 장치의 RX에 연결. |
② I2C (TWI)
2선식 통신(SDA + SCL). 하나의 버스에 최대 127개 장치 연결 가능. OLED, LCD, 온습도 센서, 자이로 센서 등에 활용됩니다.
| 핀 | 기능 | 설명 |
|---|---|---|
| A4 | SDA | 데이터 라인. Wire 라이브러리 사용. |
| A5 | SCL | 클록 라인. Wire 라이브러리 사용. |
③ SPI
4선식 고속 통신. SD 카드 모듈, TFT 디스플레이, 무선 모듈(nRF24L01) 등에 사용됩니다.
| 핀 | 기능 | 설명 |
|---|---|---|
| D10 | SS | Slave Select. 여러 장치를 각각 다른 핀으로 선택 가능. |
| D11 | MOSI | Master → Slave 데이터 전송. |
| D12 | MISO | Slave → Master 데이터 전송. |
| D13 | SCK | 클록 신호. |
9. 기초 코드 예제
① LED 깜빡이기 (Blink)
// D13 내장 LED를 1초 간격으로 깜빡이는 기본 예제
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // LED 켜기
delay(1000);
digitalWrite(LED_BUILTIN, LOW); // LED 끄기
delay(1000);
}
② 버튼으로 LED 제어 (내부 풀업 저항)
const int btnPin = 2; // D2: 버튼 핀
const int ledPin = 13; // D13: LED 핀
void setup() {
pinMode(btnPin, INPUT_PULLUP); // 내부 풀업 저항 활성화
pinMode(ledPin, OUTPUT);
}
void loop() {
if (digitalRead(btnPin) == LOW) { // 버튼 누름(LOW)
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
③ 아날로그 입력 → 시리얼 출력
void setup() {
Serial.begin(9600);
}
void loop() {
int val = analogRead(A0);
float voltage = val * (5.0 / 1023.0);
Serial.print("ADC: "); Serial.print(val);
Serial.print(" 전압: "); Serial.print(voltage, 2);
Serial.println("V");
delay(500);
}
10. 자주 묻는 질문 (FAQ)
Q. 5V 센서와 3.3V 센서를 함께 사용할 수 있나요?
가능하지만 레벨 시프터(Level Shifter)가 필요합니다. 3.3V 기준 센서 출력을 5V 핀에 직접 연결하면 센서가 손상될 수 있습니다.
Q. D0, D1 핀을 일반 I/O로 사용해도 되나요?
기술적으로는 가능하지만 권장하지 않습니다. USB 시리얼 통신과 공유되어 스케치 업로드 중·시리얼 모니터 사용 중에 충돌이 발생할 수 있습니다.
Q. analogRead()의 해상도는 얼마인가요?
10비트 ADC로 0~1023 값을 반환합니다. 기준 전압 5V 기준 분해능은 약 4.9mV(5V ÷ 1024)입니다.
Q. 한 번에 몇 개의 LED를 켤 수 있나요?
핀 하나당 최대 40mA, 보드 전체 최대 약 200mA입니다. 220Ω 저항 기준 LED 1개당 약 14mA이므로 직접 구동 시 최대 약 14개 수준입니다. 더 많이 필요하면 시프트 레지스터(74HC595)나 트랜지스터를 활용하세요.
Q. PWM이 진짜 아날로그 출력인가요?
아닙니다. 디지털 펄스의 폭(듀티 사이클)을 조절해 아날로그처럼 동작시키는 방식입니다. 진짜 아날로그 전압이 필요하다면 DAC 모듈(MCP4725)을 I2C로 연결해 사용하세요.
'아두이노 보드' 카테고리의 다른 글
| 아두이노 CH340 드라이버 설치 방법 및 에러 해결법 5가지! (0) | 2026.07.13 |
|---|---|
| 아두이노 나노의 모든 것(핀맵, 핀 설명) (0) | 2026.06.08 |
| 아두이노 우노 Q의 모든 것 총정리! (사양, 가격, AI 사용법) (0) | 2026.05.27 |
| 아두이노 우노 보드 DIP 타입 vs SMD 타입의 비교 (0) | 2026.05.13 |