아두이노 강좌 #1 아두이노 개요 및 프로그래밍 구조
Lucy Archive
Lucy 2023
2020. 6. 30. 02:09

아두이노 개요 및 프로그래밍 구조

본 포스트에서는

아두이노에 대한 간략한 소개와 아두이노 프로그램 구조에 대한 소개

를 작성하였습니다. 이후 작성할 아두이노 프로그래밍 포스트를 위한 최소한의 정보만 작성하였습니다. 아두이노 보드의 종류, 사양, 기능 전반에 대한 내용이 필요하신 분은 인터넷 검색으로 더 좋은 자료를 볼 수 있으니 참고해주세요.
  본 포스트의 내용에 대해 모르는 내용이 많더라도, 이후에 작성될 포스트를 보면 자연스럽게 알게 되는 부분입니다. 이런게 있구나라고 지나가는 정도로 보셔도 됩니다.

아두이노란?

  [각주:1]아두이노는 마이크로컨트롤러(MCU)로 제작된 전자보드 와 개발 도구 및 환경을 말합니다. 

  MCU는 아래 그림과 같이 프로그래밍이 가능한 전자 칩(IC)을 말합니다. 프로그래밍이 가능하다는 말은 '밤이 되면 네온싸인에 불을 켜라~', '실내 공기보다 실외 공기가 좋으면 환기 시스템을 가동하라~' 등과 같이 이 보드를 사용하는 사람의 의도에 따라 동작하는 기능을 수행하게 하는 것을 의미합니다. 실제로 이런 MCU에 프로그래밍을 하려면 회로(HW)와 관련된 지식, MCU에 관한 지식, (일반적으로) C 언어 능력이 있어야 프로그래밍이 가능합니다. 

  아두이노는 앞서 말한 회로지식, MCU 지식, C언어 능력이 없어도 이런 마이크로컨트롤러를 쉽게 동작 할 수 있게 해줍니다. 아두이노 보드와 아두이노 개발 환경은 비전공자에게 이런 HW를 제어하기 위한 진입 장벽을 낮추기 위해 고안되었습니다.

아두이노 보드

  아두이노 보드는 다양한 종류가 있습니다. 본 포스트에서는 아두이노 보드의 종류, 성능, 사양 등을 다루지 않습니다. 자신의 용도에 맞는 보드를 찾기 위해 검색사이트에서 검색하시면 잘 정리된 많은 정보를 볼 수 있으니 참고해주세요. 이후 진행될 포스트의 프로그램은 Arduino Uno 보드를 기준으로 작성 할 예정이고, 추후에는 ESP32가 적용된 보드를 사용한 프로그래밍 관련 포스트를 작성 예정 입니다. 참고로 공식 아두이노 보드가 아니더라도, 아두이노 개발 환경으로 프로그래밍이 가능한 보드들이 많이 있습니다. 이 보드들로 HW지식 없이 작품, 프로젝트 또는 프로토타입 개발이 가능합니다.

아두이노 보드 종류(좌) Arduino Uno / (우) Arduino Mega


아두이노 개발 환경

  아두이노는 아두이노 보드 프로그래밍을 하기 위해 코드 편집기, 컴파일러, 업로더 등이 합쳐진 통합환경(Arduino IDE)을 제공합니다. 이 개발환경에는 라이브러리 관리, 시리얼 모니터, 시리얼 플로터 등의 부가적인 도구도 함께 있습니다.

  • 컴파일러 : 아두이노 프로그래밍 방식으로 작성된 코드를 MCU가 이해하도록 변환
  • 업로더 : 컴파일러된 파일을 지정된 보드에 업로드
  • 라이브러리 관리 : 예제 지원, 라이브러리 검색/추가/삭제 기능

아두이노 IDE 설치 방법 및 추천하는 환경 설정이 필요하시면 아래의 링크를 참조해주세요.

👉 아두이노 환경 설정(Arduino IDE 환경 설정 팁, Visual Studio Code 개발 환경 구축)

Arduino Uno 보드 구성과 기능

Arduino Uno PinoutArduino Uno Pinout

Arduino Uno Spec.

  • MicroContoller : ATmega328P
  • Operating Voltage : 5V
  • Recommand Input Voltage : 7-12V
  • DC Current on I/O Pins : 40 mA (GPIO 핀에 흐를 수 있는 전류)
  • DC Current on 3.3V Pin : 50 mA (3.3V 전원 최대 공급 전류)
  • Flash Memory : 32KB ( 0.5KB 는 아두이노 부트로더로 사용
  • SRAM : 2KB
  • EEPROM : 1KB
  • Clock Speed : 16MHz

Arduino Uno Peripheral

아래 Arduino Uno Peripheral 은 이후 프로그래밍을 하면서 자세히 설명하도록 할 예정입니다. 
  • GPIO x 20 : Digital Input/Output 
  • PWM x 6 : Analog Output
  • EXTI x 2 : External Interrupt
  • ADC x 6 : Analog Input
  • UART x 1 : Serial
  • I2C x 1
  • SPI x 1
  • Timer 

아두이노 언어

  [각주:2]아두이노 언어(Arduino Language) C++ 언어를 근간으로, 초보자 중심으로 마이크로컨트롤러를 편하게 프로그래밍이 가능하도록 수정/개발된 언어입니다. 

  기존 임베디드 시스템 프로그래밍 방식으로 MCU를 프로그래밍하게 되면, 보편적으로 메모리에 직접 또는 간접적으로 접근하여, 지정된 레스스터의 값을 조정해야 하지만, 아두이노는 주변 장치를 제어하는 API를 제공하여 메모리,레지스터 접근 없이 제공되는 함수 주변 장치(Peripheral)를 쉽게 제어가 가능합니다.

아두이노 프로그래밍 구조

  아두이노 코드는 아래 그림과 같이 크게 선언부, setup() 함수, loop() 함수로 구성됩니다. 각 부분에 대한 간략한 설명은 아래와 같습니다. 

  • Variable Declaration Section : 선언부
    • 라이브러리 참조
    • 메크로 설정
    • 전역 변수 선언
    • 함수 선언
    • 컴포넌트, 클래스 선언
  • [필수] Setup Section : setup()
    • 아두이노에 저장된 프로그램이 시작할 때 한번만 실행 되는 함수
    • Peripheral 또는 연결된 Component 초기화
  • [필수] Loop Section : loop()
    • 반복적으로 수행되는 함수
    • 메인 동작 프로그램이 작성 되는 곳

아두이노 knob 예제아두이노 knob 예제

마무리

  결론적으로, 아두이노 프로그래밍을 한다는 것은 아래의 사항을 진행하는 것입니다. 다음 포스트는 본격적으로 아두이노 프로그래밍 방법에 대한 설명을 진행하겠습니다. 읽어 주셔서 감사합니다.^^

  • 사용할 기능을 정의하고
  • 아두이노 보드를 이용해 회로를 꾸미고
  • 아두이노 언어로 Arduino IDE 에서 프로그램 작성
  • Arduino IDE 에서 아두이노 보드로 작성된 프로그램 업로드
  • 아두이노 보드에서 동작 확인

관련포스트

아두이노 강좌 전체 리스트 보기 👉 아두이노 강좌 리스트


  1. Arduino Wikipedia : https://en.wikipedia.org/wiki/Arduino [본문으로]
  2. Arduino Language Reference : https://www.arduino.cc/reference/en [본문으로]