아두이노 프로그래밍 기초(1)

아두이노 개발 환경에 관련된 내용을 다룹니다.

아두이노의 개발 철학

아두이노는 처음 개발 당시, 비전공자도 누구나 쉽게 개발할 수 있는 개발보드를 목표로 설계되었습니다. 프로그래밍에 대한 전문 지식이 없어도, 기초적인 원리만 알고 있다면 아두이노를 사용하여 문제없이 프로그래밍을 시작할 수 있습니다.

아두이노 IDE 기본 구조

아두이노를 실행하면 아래와 같은 창이 뜨며, 기본적으로 setup()loop()라는 두 개의 함수가 포함된 구조를 확인할 수 있습니다.
그리고 왼쪽 상단의 체크버튼이 컴파일(코드 검사), 화살표 버튼이 업로드 버튼입니다.

setup() 함수

  • 기능: 프로그램 시작 전에 미리 설정해야 할 부분을 정의합니다.
  • 예를 들어, 아두이노 보드에서 모터를 제어할 핀을 설정하려면 다음과 같이 작성할 수 있습니다:
void setup() {
    pinMode(9, OUTPUT); // 디지털 9번 핀을 출력으로 설정
}

loop() 함수

  • 기능: 프로그램 실행 중 반복적으로 수행될 작업을 정의합니다.
  • 예를 들어, 모터를 30도 움직였다가 -30도로 움직이는 작업을 반복하려면 다음과 같이 작성합니다:
void loop() {
    // 모터 동작 코드
}

주석 작성 방법

주석은 프로그램의 코드에 대한 설명을 추가할 때 사용됩니다. 컴파일 시 주석은 무시되므로 코드 실행에 영향을 주지 않습니다.

한 줄 주석: // 뒤에 설명을 작성합니다.

// 이 코드는 LED를 켜는 코드입니다.

여러 줄 주석: /*로 시작하여 */로 끝냅니다.

/*
 이 코드는
 LED를 켜고 끄는
 예제 코드입니다.
*/

전처리와 세미콜론

전처리

전처리는 컴파일 전에 실행되며, 프로그램의 구조를 변경하거나 라이브러리를 추가할 때 사용됩니다.

#include <Servo.h>  // 서보모터 라이브러리 추가

세미콜론 (;)

세미콜론은 각 문장의 끝을 나타냅니다. 단, 함수 정의나 전처리에는 세미콜론을 사용하지 않습니다.

int x = 10;  // 세미콜론 필수

아두이노의 주요 함수

pinMode(pin number, INPUT or OUTPUT)

특정 핀을 입력용 또는 출력용으로 설정하는 함수입니다.

pinMode(9, OUTPUT);  // 디지털 9번 핀을 출력으로 설정

digitalWrite(pin, LOW or HIGH)

출력 핀에 상태값(HIGH/LOW)을 설정하는 함수입니다.

digitalWrite(9, HIGH);  // 디지털 9번 핀에 HIGH(5V) 신호 출력

delay(time)

일정 시간 동안 동작을 멈추는 함수로, 단위는 밀리초(ms)입니다.

delay(1000);  // 1초 대기

아두이노 라이브러리

라이브러리는 특정 목적의 기능을 수행하기 위해 미리 작성된 파일들의 집합입니다.

  • 서보모터를 제어하려면 서보모터 전용 라이브러리를 추가해야 합니다.
  • 아두이노 IDE는 기본적으로 여러 라이브러리를 내장하고 있지만, 고급 모듈이나 센서를 사용하려면 외부 라이브러리를 추가로 설치해야 합니다.
#include <Servo.h>  // 서보모터 라이브러리 추가

아두이노 Blink 예제 따라하기

아두이노에서 가장 기본적인 Blink 예제를 실습해 보세요. 이 예제는 보드의 디지털 13번 핀에 연결된 LED를 깜빡이게 만드는 간단한 프로그램입니다.

Blink 예제 열기

파일 > 예제 > 01.Basics > Blink를 선택합니다.

보드 선택

Tools > Board > Arduino AVR Boards > Arduino Uno

포트 연결

USB에 연결된 아두이노를 인식시키기 위해 Tools > Port > 포트를 선택합니다.
여기서 아두이노가 인식되지 않는 경우 아두이노 IDE 관련 글을 참고해서 FTDI Driver를 설치하고 업데이트 해주세요.

컴파일 및 업로드

왼쪽 상단의 체크 버튼을 클릭하여 컴파일합니다.
화살표 버튼을 클릭하여 소스 코드를 아두이노 보드에 업로드합니다.

결과 확인

그러면 13번 핀 옆에 LED가 깜빡이는 것을 확인할 수 있습니다.

추가

delay함수 안에 숫자를 변경해서 0.5초, 0.1초에 한번씩 깜빡이도록 수정해보세요

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW
  delay(1000);                      // wait for a second
}