아두이노에 직접만든 라이브러리는 추가하는 것은 별거 없습니다.
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?
, 아두이노 스토리 카페 해리님 - 아두이노 라이브러리 만들기
[Arduino] 한번에 2개이상의 스테핑 모터를 제어하기 (126) | 2013.12.18 |
---|---|
[Arduino] 'Stepper.h'는 두개의 모터를 제어할 수 없다. (4) | 2013.12.17 |
[Arduino] 라이브러리 작성하기 (0) | 2013.12.10 |
[Arduino] SN754410NE칩을 이용한 바이폴라 스테핑 모터(bipolar stepping motor) 제어 (6) | 2013.11.28 |
[Arduino] 스플릿(split) 구현하기 (0) | 2013.11.27 |