프로그램을 할때 #include <뭐시기.h> 로 라이브러리를 쓰죠?
이때 직접만든 라이브러리를 쓰려면 어떻게 해야 할까요?
라이브러리에다가 저장 시키고 싶은 함수:
예를 들어, 아두이노에서 Serial.print함수를 써서 여러변수의 출력값을 보려면 이렇게 코드를 짜야합니다.
Serial.print(val1);
Serial.print(",");
Serial,print(val2);
Serial.print(",");
Serial.print(val3);
Serial.print(",");
Serial,print(val3);
Serial.println(",");
음.. 굉장히 보기 싫고 귀찮네요 전..
그래서 visual studio에서 처럼 출력하고 싶은 마음이 간절해 짐니다.
printf("%d, %d, %d, %d ", val1, val2, val3, val4);
이때 요 함수를 쓰면 위에서 처럼 쓸수 있습니다!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #define ARDBUFFER 16 int printt(char *str, ...) { int i, count=0, j=0, flag=0; char temp[ARDBUFFER+1]; for(i=0; str[i]!='\0';i++) if(str[i]=='%') count++; va_list argv; va_start(argv, count); for(i=0,j=0; str[i]!='\0';i++) { if(str[i]=='%') { temp[j] = '\0'; Serial.print(temp); j=0; temp[0] = '\0'; switch(str[++i]) { case 'd': Serial.print(va_arg(argv, int)); break; case 'l': Serial.print(va_arg(argv, long)); break; case 'f': Serial.print(va_arg(argv, double)); break; case 'c': Serial.print((char)va_arg(argv, int)); break; case 's': Serial.print(va_arg(argv, char *)); break; default: ; }; } else { Serial.print(str[i]); } }; Serial.println(); return count + 1; } |
이 함수를 아두이노 소스에서 붙여 넣기 하면 되죠.
그러나!! 이 함수는 자주!! 쓸것이기 때문에 라이브러리에다가 이 함수를 저장해서 계속 쓰고 싶습니다.
라이브러리 만들기:
자! 그럴때는 일단 아두이노 라이브러리에 폴더하나를 만듭니다.
저는 myfuc이라고 했습니다.
폴더안에 (폴더와 같은 이름.h) 인 메모장을 만듭니다.
저는 myfuc.h 입니다.
이때 생각 하셔야 할께 #incldue의 의미가 단순이 파일을 복사 붙이기 한다는 사실!
이 폴더안에 위에 printt함수를 복사해주고 맨~ 위에 #include "Arduino.h"를 써줍니다.
그러면 완료!!
출처:
-라이브러리
https://www.inkling.com/read/arduino-cookbook-michael-margolis-2nd/chapter-16/recipe-16-4
http://arduino.cc/en/Hacking/LibraryTutorial
http://playground.arduino.cc/code/library
-printt함수
http://jangsalt.tistory.com/entry/%EA%B0%80%EB%B3%80-%EC%9D%B8%EC%88%98-vastart-vaend-vaarg-valist
http://forum.falinux.com/zbxe/index.php?document_srl=406096&mid=gcc
'아두이노 > 기본' 카테고리의 다른 글
부트로더 (0) | 2016.02.08 |
---|---|
최소한의 필수 회로 (0) | 2016.02.08 |