매우 유명하여 딱히 설명할 필요가 없는 센서인데,
예제또한 풍부합니다.
하지만 깔끔하게 센서제어 및 액세스에 관련한 부분만 만들어진것은 안보이는것 같아
제가 참고 했던 예제중 하나를 클래스로 래핑하여, 라이브러리화 했습니다.
사용법은 아래와 같습니다.
첨부 파일을 아두이노 라이브러리에 추가 하시고 사용하면됩니다.
칼만필터라는 예제를 수정한 버전인데 혹 이미 같은 라이브러리를 추가해놓으신경우에는
에러가 날 수 도 있겠습니다.
그런경우에는 CMPU6050.h 파일만 칼만필터 라이브러리 폴더내에 복사해 넣으시면되겠습니다.
첨부라이브러리
구글 블러그는 첨부 파일기능이 없어 불편하네요..
일전에 밸런싱 로봇을(http://eltgroup.tistory.com/266) 만들때 아래 라이브러리를 활용하여 만든것이니, 동작에 별문제 없다고 생각합니다.
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
|
#include <Arduino.h>
#include <Wire.h>
#include <Kalman.h>
#include <CMPU6050.h>
//mpu6050 매니저입니다. 단순히 누군가 만들어놓은 유명한 예제에서 mpu6050부분만 뽑아 클래스화 시킨겁니다.
CMpu6050Manager g_Mpu6050;
void setup()
{
g_Mpu6050.Init(); //setup에서 반드시 한번 호출해 줍니다.
}
void loop()
{
//매 루프마다 호출되게 해줍니다.
g_Mpu6050.Update();
//x값은 -90 ~ 90
//y값은 -180 ~ 180범위
//상보 필터(Complementary Filter)
float companglex = g_Mpu6050.GetCompAngleX();
float compangley = g_Mpu6050.GetCompAngleY();
//칼만 필터,
float kalmananglex = g_Mpu6050.GetKalAngleX();
float kalmanangley = g_Mpu6050.GetKalAngleY();
}
| cs |
댓글 없음:
댓글 쓰기