삽질 기반의 공학/Arduino

001. 아두이노 라이브러리 직접 만드는 법에 대해서..

반응형

서론

 

평소에는 라이브러리를 써보는 입장이었습니다.

라이브러리 매니져나 깃허브를 돌아다니며 필요한 라이브러리를 찾아 해매고 있었죠.

그러다 문득 직접 라이브러리를 만들어보고 싶었습니다.

 

그래서! 오늘은 아두이노 라이브러리를 직접 만들어보겠습니다.

​(좀 뜬금없지만, 보통 저는 문득 떠올린걸 바로 실천에 옮겨버리는 성격이 있습니다)

 


라이브러리의 구조

 

먼저 라이브러리의 구조에 대하여 이해가 필요한데요.

보통의 라이브러리의 구조는 2가지 파일이 핵심입니다.

바로 헤더(Header) 파일소스코드 파일입니다.

헤더 파일은 확장자가. h인 파일로 코드 내에서 라이브러리를 사용하고자 할 때 포함(include) 시키는 파일이죠.

//MyLib.h

#ifndef _MyLib_H_
#define _MyLib_H_

enum nums{ ONE = 1, TWO, THREE };
class MyLib{
	public :
		MyLib(enum nums n);
		void func();
	private : 
		int _variable;
};

#endif

 

위처럼 헤더 파일에는 자세한 기능이 담겨있다기보다는 기본적인 형 선언으로만 이루어져 있습니다.

자세한 기능을 서술하는 곳은 소스 코드입니다.

//MyLib.cpp

#include "UltraSonic.h"

MyLib::MyLib(enum nums n){
    _variable = n;
}

void MyLib::func(){
    _variable++;
}

소스 코드에 헤더 파일을 포함시켜 선언해둔 함수와 변수들을 이용하여 라이브러리의 기능을 구성합니다.

이렇게 해둔다면 라이브러리의 기본 구조는 완성된 것입니다.

이렇게 까지만 해도 사용은 가능하지만 부가적인 요소도 필요합니다.

혼자서만 자작 라이브러리를 사용한다면 본인이 만든 것이기에 모든 구조가 이해되지만, 공개용 라이브러리를 만들 생각이라면 다른 사람이 이 라이브러리를 사용할 때 이해를 도우거나 사용을 편하게 만드는 요소를 넣어야 합니다.

그럼 부가적인 요소에는 무엇이 있을까요?


추가적인 요소

 

부가적인 요소에는 키워드(Keyword) 파일, Examples 폴더가 있습니다.

먼저, 키워드 파일은 Syntax Coloring을 위해 존재합니다.

여기서 Syntax Coloring 문법을 강조하기 위해 사용하는 것입니다.

Syntax Coloring 미적용

MyLib lib(ONE);

lib.func();

Syntax Coloring 적용

MyLib lib(ONE);

lib.func();

이렇게 실제로 코드에는 효과가 없지만 유효한 문법에 색상을 부여함으로써 라이브러리를 사용하는 프로그래머가 코딩하는 데에는 큰 배려가 될 수 있습니다.

 

# keywords.txt
MyLib	KEYWORD1
func	KEYWORD2
ONE	LITERAL1
TWO	LITERAL1
THREE	LITERAL1

키워드 파일은 위와 같이 구성되어 있습니다.

txt 파일이며 문장 앞에 "#"가 붙으면 주석 처리가 됩니다.

한 문장마다 1개의 단어의 색상을 부여할 수 있으며 방법은 아래와 같습니다.

색상을 부여할 단어

(TAB)

종류 구분어

주의할 점은 두 개의 단어를 붙여 쓰는 것이 아닌 TAB으로 분리해야 합니다.

색상을 부여할 단어에는 함수나 상수 등의 이름을 적으며, 종류에 따라 색상을 다르게 부여합니다.

종류 구분어는 아래와 같습니다. (색상의 기준은 아두이노 IDE입니다)

구분어

종류

색상

KEYWORD1

Datatypes, 자료형

주황색, 진하게

KEYWORD2

methods, 함수

주황색

LITERAL1

Constants (상수)

청록색

다음은 Examples 폴더는... 이름 그대로 예제 폴더입니다.

라이브러리의 내부 함수들로 구현한 다양한 활용 예제를 담아두는 폴더입니다.

기본적으로 처음에는 무조건 폴더 이름이 Examples 이어야 하며, 내부에는 아두이노 소스코드를 넣어놓으면 아두이노 IDE에서 자동 인식합니다. (예제 코드도 폴더에 있어야 합니다.)

예를 들어 MyLib 라이브러리에 BasicExam.ino 예제 코드를 넣고 싶다면 아래와 같이 구성하면 됩니다.

MyLib/Examples/BasicExam/BasicExam.ino

이렇게 넣으면 아두이노 IDE에서 정상 인식하여 쉽게 예제 코드를 열람할 수 있습니다.

 

예제 파일, Keyword 파일, 소스 코드와 헤더..

위의 모든 과정을 거치면 여러 개의 폴더와 파일이 나오게 됩니다.

이 파일들을 모두 라이브러리의 이름과 동일한 폴더에 담아준 뒤 라이브러리 폴더에 넣어서 사용하던가 압축해서 배포하시면 많은 분들이 사용할 수 있습니다.


적용시켜보자!

 

그전에, 직접 사용해보며 문제는 없는지 확인해보겠습니다.

먼저 IDE 상에서 라이브러리가 인식되는가를 검사하고,

IDE 상에서 예제 코드가 잘 잡히는지 확인해 준 뒤,

마지막으로 예제 코드를 열어 Syntax Coloring이 잘 되었는지 확인합니다.

 

여기까지 만들면 하나의 라이브러리가 제작된 것입니다.

여기서 만든 MyLib 라이브러리는 참고용으로 첨부하겠습니다.

 

MyLib.zip
0.00MB

이렇게 아두이노 라이브러리 만드는 법을 알아보았습니다.

이만 글 마치겠습니다.

감사합니다.

 

반응형