이 문서는 아두이노 보드를 사용하기 위해 필요한 프로그래밍 기초 지식이 없는 분들을 위한 가이드 문서입니다. 따라서 이미 프로그래밍에 대한 경험이 있다면 이 강좌 시리즈는 넘어가셔도 좋습니다.

=============================================================

프로그래밍은 마치 회사를 운영하기 위한 계획을 세우는 것과 유사하다고 했습니다. 이런 관점에서 라이브러리에 대해 얘기해보려고 합니다. 라이브러리란 쉽게 얘기해서 외주를 주는 것과 유사합니다.

회사를 운영한다면 직원들 점심을 줘야 할겁니다. 그런데 회사에서 재료구매부터 조리, 배식까지 도맡아 해야할까요? 이런 일은 회사의 전문분야도 아니고 이런걸 잘하는게 회사의 목적도 아닐겁니다. 이럴때는 외부 업체에 위탁해서 운영을 하는게 일반적이겠죠.

라이브러리도 마찬가지입니다. 프로그래밍을 하다보면 여러 기능들이 필요합니다. 아두이노에서 작업하다보면 PC로 USB-Serial 통신을 통해 디버그 메시지를 출력한다던지, 각종 센서를 제어하기 위한 코드들이 필요합니다. 이런 코드들을 일일히 우리가 직접 작성한다면 원하는 프로젝트 하나 하는데 엄청난 시간과 노력이 필요합니다. 그래서 라이브러리라는 것을 사용합니다. 기업이 외주를 주는 것과 비슷하게 라이브러리는 우리가 원하는 요구사항을 간단히 주문만 하면 자체적으로 필요한 작업들을 다 해서 결과만 넘겨줄 수 있도록 설계되어 있습니다. 아두이노에는 이런 라이브러리들이 다양하게 개발되어 있기 때문에(게다가 무료!!) 우리는 보다 쉽게 기능을 구현할 수 있습니다.

라이브러리를 사용하는 방법은 프로그래밍 언어나 개발환경에 따라 다양합니다. 아두이노에서는 어떻게 사용할까요?

먼저 라이브러리를 설치해야 합니다.

인터넷에서 우리가 원하는아두이노용 라이브러리를 다운로드 받습니다. 보통 zip 파일 형태로 배포되는데 압축을 풀고 그 안에 있는 폴더를 [아두이노 설치폴더 / libraries] 폴더에 복사해 넣어주면 됩니다. 그리고 아두이노 개발환경을 재실행 하면 됩니다.

라이브러리를 사용하는 방법은 간단히 아래 코드를 스케치 최상단에 넣어주면 됩니다.

#include <xxx.h>

xxx는 라이브러리 이름으로 설치한 라이브러리 폴더의 이름과 일치하며, 폴더 안에 xxx.h (헤더)파일이 존재해야 합니다. 이제 라이브러리를 사용할 준비가 모두 완료되었습니다. 이후부터는 각각의 라이브러리 사용법에 맞게 사용하면 됩니다. 아두이노 개발환경이 라이브러리 사용이 적절히 이루어졌는지 문법 검사 등을 해주므로 문제가 있다면 컴파일 과정에서 에러 메시지를 출력해줍니다.

아두이노를 예로 설명을 했지만 실제 다른 프로그래밍 언어에서도 별반 다르지 않습니다.

아두이노는 가장 기본이 되는 라이브러리들을 미리 가지고 있습니다. [아두이노 설치폴더 / libraries] 폴더에 보시면 모터, WiFi 쉴드 등을 사용하기 위한 외부 라이브러리들이 미리 설치되어 있음을 알 수 있습니다.

그리고 아두이노에서 외부 센서들과 통신을 하기 위해 필요한 라이브러리, 아두이노의  저장장치인 EEPROM에 데이터를 쓰고 읽기 위한 라이브러리들을 내장하고 있습니다. 이 라이브러리들은 [아두이노 설치폴더 / hardware / arduino /avr / libraries] 폴더를 보시면 됩니다. SoftwareSerial, SPI, Wire (serial, I2C, SPI 통신용 라이브러리), EEPROM(저장장치 read/write용 라이브러리) 이 설치되어 있을겁니다. (최신버전 아두이노 개발환경 기준)

아두이노에서 라이브러리를 사용하는 상세방법은 아래 링크를 참고하세요.

# 강좌의 내용이 명확하지 않거나 이해가 힘든 부분이 있으시면 댓글로 말씀해 주세요. 해당 부분을 지속적으로 업데이트 하겠습니다.

=============================================================

이 문서는 작성자의 동의없이 개인적인 목적 외의 상업적인 목적으로 활용되어서는 안됩니다.

이 문서의 일부 혹은 전체를 수정, 삭제, 재배포 하여서는 안됩니다.

작성자 : GodsTale (godstale@hotmail.com)