2013. 12. 10. 14:30

아두이노에 직접만든 라이브러리는 추가하는 것은 별거 없습니다.

c++스타일로 클래스를 만들고 아두이노 프로그램에서 불러오면 되죠.

 

이 포스팅에서는 라이브러리를 직접 만들고 내 아두이노 프로젝트에 추가하는 방법을 다룹니다.

 

1. 테스트용 라이브러리 만들기

헤더에 코드를 몰아넣어도 상관없고 '.h'와 '.cpp'로 나누어 만들어도 상관없습니다.

이번 예제에서는 둘 다 할 수 있도록 코드를 만들었습니다.

 

 

1-1. 헤더 만들기

헤더는 다음과 같이 만듭니다.

<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();
};

 

 

1-2. 소스코드 작성

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" );
}

 

 

2. 테스트용 펌웨어 작성

테스트용 프로그램을 작성하기전에 위에서 만든 파일을 라이브러리에 추가해야 합니다.

 

 

2-1. 라이브러리에 추가하기

여기서 좀 이상한 것이 '라이브러리 추가(Add Library...)'로 직접추가가 안되는 경우가 있습니다-_-;

이런경우 직접 추가 해야 합니다.

 

위에서 만든 파일들을 아두이노 프로그램이 있는 폴더에 라이브러리(libraries) 폴더에 폴더를 만든 후 넣습니다.

 

이렇게 넣으시고 아두이노 프로그램을 실행합니다.

스케치 > 라이브러리 가져오기...

에 보면 직접만든 폴더 이름이 들어와 있습니다.

 

여기서 추가된 폴더 이름을 선택하면 자동으로 인크루드가 됩니다.

( #include <Lib_Test.h> )

 

 

2-2. 프로그램 작성

프로그램에서는 라이브러리만 호출하면 됩니다.

#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);
}

참암 쉽조잉~

 

 

3. 테스트

Led를 7번 핀에 연결하고 테스트 하셔도 되고 "시리얼 모니터"를 열어 확인해 보셔도 됩니다.

 

잘 작동하네요.

 

 

마무리

별생각없이 c++스타일로 작성하고 c++스타일로 선언해서 사용하려고 하니까 에러가 많이 발생하네요-_-;

아두이노가 c++과 다른것이 생각보다 많은 건지;;

 

참고 : arduino.cc - How to write libraries for the Arduino?

, 아두이노 스토리 카페 해리님 - 아두이노 라이브러리 만들기