아두이노에 직접만든 라이브러리는 추가하는 것은 별거 없습니다.
c++스타일로 클래스를 만들고 아두이노 프로그램에서 불러오면 되죠.
이 포스팅에서는 라이브러리를 직접 만들고 내 아두이노 프로젝트에 추가하는 방법을 다룹니다.
헤더에 코드를 몰아넣어도 상관없고 '.h'와 '.cpp'로 나누어 만들어도 상관없습니다.
이번 예제에서는 둘 다 할 수 있도록 코드를 만들었습니다.
헤더는 다음과 같이 만듭니다.
<WProgram.h>를 인크루드 하는이유는 아두이노 셈플에 있어서 인데....
아두이노의 어떤기능을 사용하느냐에 따라 없어도 에러가 나지 않습니다.
"arduino.h"도 마찬가지 입니다.
이 예제에서는 "String"를 사용하기 때문에 "arduino.h"가 꼭 있어야 합니다.
#include <WProgram.h>
#include "arduino.h"
class Lib_Test
{
public:
int LED_Pin;
public:
Lib_Test()
{
//LED_Pin = nPin;
LED_Pin = 7;
}
~Lib_Test()
{
}
public:
int Led_On(String sData);
void Led_Off();
};
c++에 대한 설명은 하지 않습니다.
#include "arduino.h"
#include "Lib_Test.h"
int Lib_Test::Led_On(String sData)
{
digitalWrite(LED_Pin, HIGH);
Serial.println( "LED " + (String)LED_Pin + " - On" );
return LED_Pin;
}
void Lib_Test::Led_Off()
{
digitalWrite(LED_Pin, LOW);
Serial.println( "LED " + (String)LED_Pin + " - Off" );
}
테스트용 프로그램을 작성하기전에 위에서 만든 파일을 라이브러리에 추가해야 합니다.
여기서 좀 이상한 것이 '라이브러리 추가(Add Library...)'로 직접추가가 안되는 경우가 있습니다-_-;
이런경우 직접 추가 해야 합니다.
위에서 만든 파일들을 아두이노 프로그램이 있는 폴더에 라이브러리(libraries) 폴더에 폴더를 만든 후 넣습니다.
이렇게 넣으시고 아두이노 프로그램을 실행합니다.
스케치 > 라이브러리 가져오기...
에 보면 직접만든 폴더 이름이 들어와 있습니다.
여기서 추가된 폴더 이름을 선택하면 자동으로 인크루드가 됩니다.
( #include <Lib_Test.h> )
프로그램에서는 라이브러리만 호출하면 됩니다.
#include <Lib_Test.h>
Lib_Test m_oTest;
void setup()
{
Serial.begin(9600);
}
void loop()
{
m_oTest.Led_On("TEST");
delay(1000);
m_oTest.Led_Off();
delay(1000);
}
참암 쉽조잉~
Led를 7번 핀에 연결하고 테스트 하셔도 되고 "시리얼 모니터"를 열어 확인해 보셔도 됩니다.
잘 작동하네요.
별생각없이 c++스타일로 작성하고 c++스타일로 선언해서 사용하려고 하니까 에러가 많이 발생하네요-_-;
아두이노가 c++과 다른것이 생각보다 많은 건지;;
참고 : arduino.cc - How to write libraries for the Arduino?
, 아두이노 스토리 카페 해리님 - 아두이노 라이브러리 만들기