아두이노 연결도
아두이노UNO의 하드웨어 시리얼포트는 1개 이고 프로그램 업로드시 시리얼포트(TX,RX)가 사용됩니다.
따라서 아두이노에 스케치 업로드시 DATA(EBIMU TX)를 연결하지 않은 상태로 업로드해야 합니다.
업로드 완료후 DATA(EBIMU TX)를 연결해야 합니다.
라이브러리
//////////////////////////////////////////////////////////////////// /////////////////////// EBIMU FUNCTION ///////////////////////////// #define SBUF_SIZE 64 char sbuf[SBUF_SIZE]; signed int sbuf_cnt=0; int EBimuAsciiParser(float *item, int number_of_item) { int n,i; int rbytes; char *addr; int result = 0; rbytes = Serial.available(); for(n=0;n<rbytes;n++) { sbuf[sbuf_cnt] = Serial.read(); if(sbuf[sbuf_cnt]==0x0a) { addr = strtok(sbuf,","); for(i=0;i<number_of_item;i++) { item[i] = atof(addr); addr = strtok(NULL,","); } result = 1; } else if(sbuf[sbuf_cnt]=='*') { sbuf_cnt=-1; } sbuf_cnt++; if(sbuf_cnt>=SBUF_SIZE) sbuf_cnt=0; } return result; } /////////////////////// EBIMU FUNCTION ///////////////////////////// //////////////////////////////////////////////////////////////////// | cs |
int EBimuAsciiParser(float *item, int number_of_item) 함수설명
[parameter]
item : 수신된 데이터를 저장할 주소를 입력합니다.
number_of_item : EBIMU의 1PACEKT 당 수신 항목 수를 입력합니다.
예) euler3축 출력 : 3
예) euler3축,가속도3축 출력 : 6
[return값]
리턴값은 0 또는 1입니다. 데이터를 수신하여 item내용이 갱신되었을 경우 1을 리턴합니다.
갱신된 내용이 없을 경우 0을 리턴합니다.
#define SBUF_SIZE 64
센서로 부터 수신된 1packet(1줄)을 저장하는 버퍼의 크기를 지정합니다.
1packet(1줄)당 수신되는 최대 바이트수 보다 크게 설정해야 합니다.
예제1. roll,pitch,yaw각을 수신하여 시리얼모니터 또는 시리얼플로터에 출력하기
void setup() { Serial.begin(115200); } void loop() { float euler[3]; if(EBimuAsciiParser(euler, 3)) { Serial.print("\n\r"); Serial.print(euler[0]); Serial.print(" "); Serial.print(euler[1]); Serial.print(" "); Serial.print(euler[2]); Serial.print(" "); } } | cs |
euler angle 3항목을 수신 후 ' '로 구분하여 화면에 출력하는 예제입니다.
아두이노툴의 시리얼모니터 또는 시리얼플로터에 출력하여 볼수 있습니다.
예제2. roll과 pitch가 -5도에서 +5도 이내일 경우 아두이노 보드의 LED 켜기
void setup() { Serial.begin(115200); pinMode(LED_BUILTIN, OUTPUT); } void loop() { float euler[3]; EBimuAsciiParser(euler, 3); if((euler[0]<5)&&(euler[0]>-5)&&(euler[1]<5)&&(euler[1]>-5)) digitalWrite(LED_BUILTIN, HIGH); else digitalWrite(LED_BUILTIN, LOW); } | cs |
euler angle 3항목을 수신 후 roll과 pitch가 -5도에서 +5도 이내일 경우 아두이노 보드의 LED가 켜지도록 하는 예제 입니다.
'기술정보 및 자료 > EBIMU-9DOFV3' 카테고리의 다른 글
아두이노 예제 (0) | 2016.10.06 |
---|---|
EBIMU-9DOFV3 지자기간섭 방지 설정 (0) | 2016.02.23 |
EBIMU-9DOFV3 지자기센서 캘리브레이션 (0) | 2016.02.23 |
EBIMU V3 VIEWER & EBIMU Viewer (0) | 2016.02.23 |
USB 드라이버 (0) | 2016.02.23 |
EBIMU-9DOFV3 매뉴얼 (0) | 2016.02.22 |
댓글을 달아 주세요