처음 Arduino 라이브러리

개요



Arduino 라이브러리 자체 제작

소개



Arduino IDE로 개발하고 있습니다만, 소스 파일 하나라면, 코드량이 늘어나면 힘듭니다.
그래서 잘 생긴 자랑 함수는 라이브러리로 잘라서 재사용합시다.

도서관 사용



라이브러리를 만들기 전에 먼저 유명한 라이브러리를 사용하는 것으로 시작합시다.
여기에서는 Time 라이브러리 를 예로 합니다.
  • git 명령이 설치되어 있습니까?
  • clone 합니다 $ git clone https://github.com/PaulStoffregen/Time.git
  • clone 한 디렉토리를 통째로, zip 합니다
    (이 때의 디렉토리명이, 임포트시의 라이브러리명이 됩니다.) $ zip -r Time.zip Time
  • zip 파일을 IDE로 가져옵니다.
    (스케치 - 라이브러리 포함 - .zip 형식 라이브러리 설치)

    이제 사용할 수 있게 되었습니다.
  • 인클루드 해 사용합니다.
    (스케치-라이브러리 포함-Time)
  • 이제 now();와 같은 함수를 사용할 수 있습니다.
    (헤더 파일을 포함하는 것만으로 (링크하지 않고) 사용할 수있는 것은 위화감이 있지만 IDE 측에서 편리하게 해주고 있다고 생각합니다)

  • 도서관 만들기



    그럼 실제로 만들어 봅시다.
    라이브러리에는 .h(헤더 파일) 및 .cpp(소스 파일)이 필요합니다.
  • IDE의 오른쪽 끝에 있는 ▼ 버튼을 눌러 탭(파일)을 추가할 수 있습니다.
    이 예에서는 NTP.hNTP.cpp 를 추가합니다.

  • 각각 코드를 작성합니다.

  • NTP.h
  • #ifndef _NTP_h
    #define _NTP_h
    
    int ntpdate();
    
    #endif
    
  • NTP.cpp
  • #include "NTP.h"
    
    int ntpdate()
    {
      return 0;
    }
    
  • sketch_xxx.ino
  • includeNTP.h가 소스 파일과 동일한 디렉토리에 있으면 ""로 묶습니다.
    (소스 파일로부터의 상대를 의미한다.)

  • #include "NTP.h" // " " で囲む
    
    void setup() {
      // put your setup code here, to run once:
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      ntpdate();
    }
    
  • 컴파일 및 실제 기계에서 실행하여 잘 작동한다면 소스를 완성하십시오.
  • NTP.hNTP.cpp 를 새 디렉토리를 만들고 거기로 이동합니다. 그 디렉토리마다 zip 하고 임포트 하면, 라이브러리로서 「사용」할 수 있게 됩니다.
  • 라이브러리로 사용할 때는 include<> 로 둘러싸도록 합니다.
  • #include <NTP.h> // < > で囲む
    
    void setup() {
      // put your setup code here, to run once:
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      ntpdate();
    }
    
  • Github 로 공개하면, 한층 더 모두 해피에.

  • 도서관은 어디에 있습니까?



    Mac의 경우

    설치된 라이브러리는 다음과 같습니다.
    (실제로 여기에 직접 디렉토리를 복사 할 수 있습니다)
    ~/Documents/Arduino/libraries/
    

    그건 그렇고, 시스템에서 사용할 수있는 라이브러리는 다음과 같습니다.
    /Applications/Arduino 2.app/Contents/Java/libraries/
    

    요약



    Arduino 라이브러리를 직접 만들었습니다.
    파일을 분할하면 깔끔하고 전망이 쉬워집니다.

    현재 예에서 나온 NTP(시간 동기화) 라이브러리를 예의 작성 중입니다. 잘 할 수 있으면 공개하고 싶습니다.

    오, 그거 틀림없어! 라고 개소는, 꼭 가르쳐 주세요!

    좋은 웹페이지 즐겨찾기