2015. 7. 25. 18:58
아두이노
자이로 와 가속도 센서가 포함된 센서입니다.
매우 유명하여 딱히 설명할 필요가 없는 센서인데,
예제또한 풍부합니다.
하지만 깔끔하게 센서제어 및 액세스에 관련한 부분만 만들어진것은 안보이는것 같아
제가 참고 했던 예제중 하나를 클래스로 래핑하여, 라이브러리화 했습니다.
사용법은 아래와 같습니다.
첨부 파일을 아두이노 라이브러리에 추가 하시고 사용하면됩니다.
칼만필터라는 예제를 수정한 버전인데 혹 이미 같은 라이브러리를 추가해놓으신경우에는
에러가 날 수 도 있겠습니다.
그런경우에는 CMPU6050.h 파일만 칼만필터 라이브러리 폴더내에 복사해 넣으시면되겠습니다.
첨부라이브러리
예제소스코드
아두이노 작품 메뉴에 있는 밸런싱 로봇은 아래 라이브러리를 활용하여 만든것이니, 동작에 별문제 없다고 생각합니다.
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 32 33 34 35 36 37 38 39 40 | #include <Arduino.h> #include <Wire.h> #include <Kalman.h> #include <CMPU6050.h> //mpu6050 매니저입니다. 단순히 누군가 만들어놓은 유명한 예제에서 mpu6050부분만 뽑아 클래스화 시킨겁니다. CMpu6050Manager g_Mpu6050; void setup() { g_Mpu6050.Init(); //setup에서 반드시 한번 호출해 줍니다. Serial.begin(9600); } 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(); Serial.print("kalx : "); Serial.print(kalmananglex, 2); Serial.print("\tkaly : "); Serial.print(kalmanangley, 2); Serial.println(); delay(500); } | cs |
'아두이노' 카테고리의 다른 글
밸런싱로봇 종합사항 (3) | 2015.12.21 |
---|---|
밸런싱로놋 mpu6050 센서방향 (0) | 2015.12.19 |
DHT11 온습도 센서 (0) | 2015.05.25 |
아두이노 visual studio 연동 (0) | 2015.05.16 |
아두이노 tone()함수 (0) | 2015.05.12 |