Page 163 - 만들면서 배우는 아두이노 드론
P. 163

filtered_angle_z = tmp_angle_z;
 }

 void setup()
 {

    initMPU6050(); // mpu-6050 과의 통신을 초기화합니다.
    Serial.begin(115200);
    calibAccelGyro(); // 안정된 상태에서의 가속도, 자이로 값을 계산합니다.
    initDT();
 }

 void loop()
 {

    readAccelGyro(); // 가속도 자이로 값을 센서로부터 읽어옵니다.
    calcDT();
    calcAccelYPR(); // 가속도 센서를 이용하여 Roll, Pitch, Yaw 각도를 계산합
 니다
    calcGyroYPR(); // 자이로 센서를 이용하여 Roll, Pitch, Yaw 각도를 계산합
 니다.
    calcFilteredYPR(); // 두 센서 값에 상보 필터를 적용하여 Roll, Pitch, Yaw
 각도를 구합니다.

    Serial.print("FX : ");
    Serial.print(filtered_angle_x);
    Serial.print(" ");
    Serial.print("FY : ");
    Serial.print(filtered_angle_y);
    Serial.print(" ");
    Serial.print("FZ : ");
    Serial.println(filtered_angle_z);
 }

[소스 코드 설명]
      ? initMPU6050() : MPU-6050 센서를 활성화합니다.
      ? calibAccelGyro() : 가속도 자이로 센서의 초기 평균값을 구합니다.
      ? initDT() : 시간 간격 초기화를 합니다.
      ? calcDT() : 시간 간격을 계산합니다.
      ? readAccelGyro() : 가속도 자이로 센서 값을 읽습니다.

                                                      162
   158   159   160   161   162   163   164   165   166   167   168