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

아두이노는 처음 개발 당시, 비전공자도 누구나 쉽게 개발을 할 수 있도록 만들어진 개발보드를 목표로 하였기 때문에, 프로그래밍에 관련된 전문 지식 없이, 아주 기초적인 원리만 알고 있어도 문제없이 프로그래밍이 가능하다.

아두이노를 실행시키면 아래와 같이 창이 뜨는 것을 확인할 수 있는데

Arduino sketch

기본적으로 setup()과 loop()가 구성되어있는 것을 볼 수 있다

Setup() 함수

setup 부분은 미리 설정을 해주는 구간이라고 보면 된다. 예를 들어, 내가 아두이노 보드에서 모터를 제어할 핀을 미리 설정해주고 싶은데 디지털 9번핀을 사용하겠다고 미리 설정을 해줄 수 있는 곳이다.

loop() 함수

loop 부분은 반복문이라고 보면된다. 주로 여러 명령문이 들어갈 수 있는데, 여기 적히는 코드들은 반복해서 실행된다. 예를 들어 모터를 30도 움직였다가 다시 -30도 움직여라는 명령어를 적는다면 계속해서 이 명령이 반복된다.

주석

// 슬래시 표시는 주석을 달아줄 때 사용한다. 주석이 한줄이면 //를 적고 그 뒤에 주석을 적어도 되지만, 주석이 여러 줄일 경우 /* 를 통해 주석을 열어주고 */를 마지막에 달아서 주석을 닫아줄 수 있다.

전처리

컴파일하기 전에 미리 처리되는 명령이다. 일반적으로 프로그램을 변경하거나 컴파일하기 용이하게 만들기 위해 사용된다. 대표적으로 #include, #define 등이 있다.

세미콜론(;)

세미콜론은 문장이 끝나는 뒤에 붙여준다. 함수의 이름이나 전처리에는 적어주지 않아도 된다.

PinMode(pin number, INPUT or OUTPUT)

핀모드는 입력과 출력을 담당하는 핀들 사이에서 어떤 핀을 입력으로 사용하고 어떤 핀을 출력용으로 사용할 것인지 정의하는 함수이다. 예를들어 pinMode(9, OUTPUT); 이라고 적어주면 아두이노의 9번 핀을 출력핀으로 사용하겠다는 뜻이다.

digitalWrite(pin, LOW or HIGH)

어떤 핀에 입력과 출력의 역할을 지정해 주었을 때, 그 설정해 준 핀의 상태값을 출력해주는 함수이다. 예를들어 digitalWrite(9, HIGH); 라고 적어주었다면 9번 핀을 HIGH상태로 만들어주겠다는 뜻이다. 보통 HIGH인 경우 1(2진법)로 인식하고 출력전압은 5V이다. LOW인 경우에는 0(2진법)으로 인식하고 출력전압은 0V이다.

delay(time);

delay함수는 일정 시간 동안 동작을 멈추는 함수이다. 시간의 단위는 밀리초(ms,1000분의 1초)이므로 예를들어 delay(1000); 이라고 써주면 1초 동안 대기한다는 뜻이다.

아두이노 라이브러리

라이브러리란 직역하면 도서관인데, 특정 목적을 위한 파일들의 집합이라고 보면 된다. 마치 도서관처럼 필요할때마다 꺼내쓰는 방식이다. 간단한 센서나 LED제어에서는 라이브러리가 필요하지 않다. 하지만 예를 들어, 서보모터를 사용하기 위해서는 서보모터 전용 라이브러리를 추가해야 한다. 서보 라이브러리는 이렇게 추가할 수 있다.
#include<Servo.h>
h는 헤더파일을 의미한다. 아두이노에 내장된 라이브러리도 있지만 복잡한 기능을 가진 모듈이나 센서를 이용하려면 전용 라이브러리가 필요하다.

아두이노 Blink 예제 따라하기!

아두이노 IDE에서 아두이노 Blink 예제를 실습해보자. 파일>예제 > 01.Basics > Blink를 선택한다.

그리고 제일 왼쪽 위에 V 버튼을 눌러주어 컴파일을 실행한다. 오른쪽 화살표를 누르면 아두이노 보드에 소스코드가 업로드 되는데,

툴 > 보드 에서 Arduino UNO 보드가 맞는지 확인하고, 포트에 우노보드가 연결된 시리얼 포트가 연결되었는지 확인한 후 소스코드 업로드를 해준다.

그러면 아래와 같이 아두이노 보드의 디지털 13번 핀 옆에 있는 LED가 깜빡이는 것을 확인할 수 있다.