가속도,자이로 센서 동작, 사용하기_Gyro, Acceleration Sensor- 9DOF-IMU(AHRS) EBIMU-9DOFV3 (E2BOX)
AHRS EBIMU-9DOFV4
출처: E2BOX
기술정보 및 자료/EBIMU-9DOFV4

UART Protocol
DataBit: 8 Data bits
StopBit: 1 Stop bit
Baudrate: 115200 bps (default)




아두이노 예제
////////////////////// EBIMU FUNCTION /////////////////////////////
#define SBUF_SIZE 64 // 센서로 부터 수신된 1packet(1줄)을 저장하는 버퍼의 크기를 지정한다.
// 1packet(1줄)당 수신된는 최대 바이트수 보다 크게 설정해야합니다.
char sbuf[SBUF_SIZE];
signed int sbuf_cnt=0;
int EBimuAsciiParser(float *item, int number_of_item) // item: 수신된 데이터를 저장할 주소를 입력
{ // number_of_item: EBIMU의 1PACEKT 당 수신 항목 수를 입력
int n,i;
int rbytes;
char *addr;
int result = 0; // return 값: 리턴 값은 0또는 1. 데이터를 수신하여 item내용이 갱신되었을 경우 1을 리턴. 갱신된 내용이 없을 경우 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); // atof: 문자열의 앞 부분에 부호와 정수 문자, 소수점 문자, 정수 문자로 구성한 부분을 float 형식의 값으로 계산하여 반환합니다.
만약 계산할 수 없는 문자를 발견하면 현재까지 계산한 값을 반환
addr = strtok(NULL,","); //strtok: 문자열 자르는 함수 (string.h 헤더 파일에 선언되어 있습니다) / strtok(대상문자열, 기준문자)
} //NULL: 문자열에는 문자열의 종료를 알리는 특수 문자 Nul이 항상 마지막에 위치한다
* 아스키 코드 십진수 0 = 16진수 0x00 = 이진수 0b00000000 = Nul(null, 널 문자) = '|0'
result = 1;
// Serial.print("\n\r");
// for(i=0;i<number_of_item;i++) { Serial.print(item[i]); Serial.print(" "); }
}
else if(sbuf[sbuf_cnt]=='*')
{ sbuf_cnt=-1;
}
sbuf_cnt++;
if(sbuf_cnt>=SBUF_SIZE) sbuf_cnt=0;
}
return result;
}
/////////////////////// EBIMU FUNCTION /////////////////////////////
////////////////////////////////////////////////////////////////////
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(" ");
}
}
