아두이노 초보자 프로젝트 (블링크, AVR, 센서제어)
LED 하나 깜빡이는 데 3만원짜리 보드까지 필요하냐고 묻는 분들이 있습니다. 결론부터 말하면, 아니요. 아두이노 우노 호환보드 하나면 첫 프로젝트는 다 끝납니다.
저는 회로 설계로 시작해서 지금은 임베디드 프로그램까지 겸하고 있는 25년차 엔지니어입니다. 회사에서는 지금도 8비트 MCU(마이크로컨트롤러 유닛, 하나의 칩 안에 CPU와 메모리, 입출력 기능이 다 들어있는 반도체)로 AVR 계열을 주력으로 씁니다. 그런데 취미로 뭔가 만들어보고 싶다는 지인들에게는 항상 AVR이 아니라 아두이노부터 권합니다. 이유는 아래에서 하나씩 풀어드릴게요.
![]() |
| [아두이노 초보자 인포그래픽] |
아두이노와 AVR, 뭐가 다른가
제가 다니는 회사는 신제품 대부분에 Atmega128, Atmega2560을 씁니다. 조금 복잡한 모터 제어나 통신이 많이 붙는 제품은 ARM Cortex M3나 M4로 넘어가고요. 이건 사실 아두이노 우노와 아두이노 메가 안에 들어있는 칩과 거의 같은 계열입니다.
차이는 딱 하나, 아두이노는 부트로더(bootloader, 전원을 켰을 때 가장 먼저 실행되면서 새 프로그램을 칩에 넣어주는 작은 관리 프로그램)가 미리 심어져 있어서 별도의 프로그래머 장비 없이 USB 케이블만으로 코드를 업로드할 수 있다는 겁니다.
회사에서 순수 AVR로 개발할 때는 JTAG이나 ISP 프로그래머를 따로 물려야 하고, 레지스터 값을 데이터시트 보면서 하나하나 세팅해야 합니다. 저는 25년 동안 이 과정을 수도 없이 반복했는데, 솔직히 이건 초보자에게 권할 방식이 절대 아닙니다.
아두이노는 그 레지스터 세팅을 digitalWrite(), analogRead() 같은 함수 하나로 다 감춰놨습니다. 제 경험상 이건 진입장벽을 거의 90% 낮춰주는 수준입니다. 전자의 꽃은 프로그램이라는 말을 예전 선배한테 들었는데, 회로를 아무리 잘 설계해도 그걸 움직이게 만드는 코드가 있어야 완성이 되거든요.
첫 프로젝트는 블링크부터 시작하세요
아두이노 커뮤니티에서 블링크(Blink)라고 부르는 LED 점멸 예제가 사실상의 표준 첫 프로젝트입니다. 실제로 2026년 기준 아두이노 초보자 가이드들도 하나같이 이걸 첫 순서로 꼽습니다(출처: CircuitPath, 2026 Arduino Projects for Beginners).
필요한 건 LED 1개, 220Ω 저항 1개, 점퍼선 2가닥이 전부입니다. GPIO(General Purpose Input Output, 프로그램으로 켜고 끌 수 있게 만들어놓은 범용 입출력 핀) 하나를 디지털 출력으로 설정하고, 1초 간격으로 켜고 끄는 코드 6줄이면 끝입니다.
지루해 보이지만 여기서 배우는 게 업로드 사이클입니다. 코드 작성 → 컴파일 → 보드에 업로드 → 동작 확인, 이 흐름을 몸에 익히면 그 다음부터 나오는 모든 프로젝트가 이 흐름의 반복일 뿐입니다.
버튼 입력, 풀다운 저항으로 배우는 디지털 리드
블링크 다음 단계는 버튼을 눌렀을 때만 LED가 켜지게 만드는 프로젝트입니다. 여기서 digitalRead() 함수와 풀다운 저항(pull-down resistor, 버튼을 누르지 않았을 때 핀의 전압을 0으로 고정시켜서 신호가 흔들리지 않게 잡아주는 저항)이라는 개념이 처음 등장합니다.
저는 회사에서 스위치 입력 회로를 설계할 때도 이 풀다운, 또는 풀업 저항을 반드시 넣습니다. 이걸 빼먹으면 아무것도 안 눌렀는데 입력값이 제멋대로 튀는 플로팅(floating) 현상이 생기거든요. 솔직히 이건 초보자들이 가장 헷갈려하는 부분인데, 실습으로 한 번 겪어보면 평생 안 잊어버립니다.
센서제어 입문, 초음파 센서와 서보모터
버튼까지 익혔다면 다음은 HC-SR04 초음파 센서로 거리 측정하기, 그리고 서보모터(정해진 각도만큼 정밀하게 회전하는 모터)를 PWM(Pulse Width Modulation, 신호를 켜고 끄는 시간 비율을 조절해서 밝기나 속도, 각도를 아날로그처럼 조절하는 방식) 신호로 제어하는 프로젝트를 권합니다.
제가 직접 써봤는데, 아두이노의 Servo.h 라이브러리는 회사에서 M3, M4 보드에 PWM 레지스터를 직접 설정하던 것과 비교하면 놀라울 정도로 간단합니다. servo.write(90) 한 줄이면 90도로 돌아갑니다. 회사 업무로 치면 타이머 레지스터, 듀티비 계산까지 다 해야 나오는 결과물이거든요.
초음파 센서와 서보모터를 합치면 사람이 다가오면 자동으로 열리는 미니 게이트 같은 프로젝트도 만들 수 있습니다. 농사일 하면서 온습도 센서로 비닐하우스 환경을 모니터링해볼까 생각하는 것도 결국 이 조합에서 출발합니다.
보드 선택 가이드, 우노 나노 메가 비교
보드 선택은 첫째, 브레드보드(breadboard, 납땜 없이 부품을 꽂아서 회로를 테스트할 수 있는 판)와의 호환성을 볼 것.
둘째, 필요한 핀 개수를 볼 것.
셋째, 예산을 볼 것. 이 세 가지 기준으로 정리하면 아래 표와 같습니다(출처: 나무위키 Arduino/하드웨어 문서, makernambo 아두이노 나노 사양 정리).
| 구분 | MCU | 플래시 메모리 | 추천 용도 |
|---|---|---|---|
| 우노(Uno) | ATmega328P | 32KB | 입문용, 브레드보드 실습 |
| 나노(Nano) | ATmega328 | 32KB | 소형 프로젝트, 휴대용 |
| 메가(Mega2560) | ATmega2560 | 256KB | 핀 많이 필요한 복잡한 프로젝트 |
자주 묻는 질문
가능은 하지만 프로그래머 장비 구매와 레지스터 학습 부담이 커서, 첫 시작으로는 권하지 않습니다.
브레드보드 실습 위주라면 우노, 완성품에 내장할 계획이면 나노가 편합니다.
가능합니다. 예제 코드를 그대로 업로드해보면서 문법을 자연스럽게 익히는 방식이 더 효율적입니다.
서보모터는 각도 제어가 가능하고, DC모터는 속도 위주 제어라는 점이 가장 큰 차이입니다.
됩니다. 아두이노에서 익힌 GPIO, PWM, 시리얼 통신 개념은 AVR, ARM 등 실무 MCU에서도 그대로 통용됩니다.
결론
25년 동안 AVR 기반 8비트 MCU와 ARM Cortex M3, M4를 다뤄온 입장에서 보면, 아두이노는 그 어려운 레지스터 설정 과정을 함수 몇 개로 압축해놓은 도구입니다. 처음부터 데이터시트를 붙잡고 씨름할 필요가 없습니다.
블링크로 업로드 사이클을 익히고, 버튼으로 입력 처리를, 초음파 센서와 서보모터로 아날로그 제어까지 넘어가면 그 다음부터는 본인이 만들고 싶은 걸 스스로 설계할 수 있는 수준에 도달합니다.
① 아두이노와 AVR은 같은 계열, 부트로더 유무만 다름
② 첫 프로젝트는 블링크(LED 점멸)로 업로드 사이클 익히기
③ 버튼 입력으로 풀다운 저항, 디지털 리드 개념 학습
④ 초음파 센서와 서보모터로 PWM, 아날로그 제어 확장
⑤ 우노로 시작해서 필요에 따라 메가로 확장
