?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | AHRS 센서값을 배열에 순차적으로 저장하여 출력하기

페이지 정보

작성자 뿡빵맘 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일18-05-09 11:42 조회627회 댓글1건

본문

AHRS(imu)센서를 teensy 보드에 연결하여 x,y,z HEX 값을 배열(EBIMU)에 저장하여 그  배열을 출력하고 싶습니다.
센서 출력은 예를 들자면 아래와 같이 HEX 값으로 출력이 됩니다.
EulerAngle출력모드 (55)(55)(FD)(31)(EA)(43)(39)(11)(03)(4F)
(55)(55) : SOP  (CK)
(FD)(31) : -719  (X값)
(EA)(43) : -5565  (Y값)
(39)(11) : +14609  (Z값)
(03)(4F) : (55)+(55)+(FD)+(31)+(EA)+(43)+(39)+(11) = 34F 
Roll(X) : -7.19도 , Pitch(Y) : -55.65도 도 , Yaw(Z) : +146.09 , CHK : 34F

아래와 같이 센서 값을 읽고 이를 배열에 저장하도록 나름 애를 쓰며... 코딩 해보았는데... 잘 안되네요 ㅠㅠ
데이터 시프트 하는 부분이 좀 헷갈립니다. 도와주세요


while(Serial1.available()){                                        // 시리얼 통신 시작되면
    EBIMU[EBIMU_index]=Serial1.read();              // 시리얼을 배열에 읽고
    EBIMU_index++;  //배열값 증가 (EBIMU[10] 까지만)
  }
  CK =(EBIMU[1]<<10|EBIMU[0]);                                      // 배열의 첫번째 두번째 값은 CK임을 의미
if(CK==0x5555)                                                                      // 배열의 첫번째, 두번째 값 모두 00일때 (CK==00)
{   
  roll =(EBIMU[3]<<8|EBIMU[2]);                                      //EBIMU 배열의 세번째, 네번째 값은 roll(x)의미
  pitch =(EBIMU[5]<<6|EBIMU[4]);                                  //EBIMU 배열의 다섯번째, 여섯번째 값은 pitch(y)의미
  yaw =(EBIMU[7]<<4|EBIMU[6]);                                    //EBIMU 배열의 일곱번째, 여덟번째 값은 yaw(z)의미
  CHK = (EBIMU[9]<<4|EBIMU[8]);                                  //EBIMU 배열의 마지막 두 개 값은 CHECK_SUM 의미
}
  Serial.print("AHRS :");  Serial.println(EBIMU[EBIMU_index]);                              // EBIMU 배열 출력하여 확인
}

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

EBIMU 배열이 byte, char 배열이라면 HEX 모드로 출력해보세요.
https://forum.arduino.cc/index.php?topic=482758.0