아두이노 연결도
아두이노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가 켜지도록 하는 예제 입니다.