 
 /* PIDs para a taxa de estabilização. Entrada: posição do quadricóptero através do MPU. Objetivo: Posição indicada através do controle. Saída: Taxa de giro proporcional ao erro. */
 /*                        ENTRADA                 SAÍDA          OBJETIVO  P  I  D  DIREÇÃO */
-PID PIDPitchStab (&ypr_degree[DMP_PITCH], &pitch_stab_output, &rcPitch, 5, 1, 0, DIRECT);
-PID PIDRollStab  (&ypr_degree[DMP_ROLL],  &roll_stab_output,  &rcRoll,  5, 1, 0, DIRECT);
-PID PIDYawStab   (&ypr_degree[DMP_YAW],   &yaw_stab_output,   &rcYaw,   5, 1, 0, DIRECT);
+PID PIDPitchStab (&ypr_degree[DMP_PITCH], &pitch_stab_output,    &rcPitch, 5, 1, 0, DIRECT);
+PID PIDRollStab  (&ypr_degree[DMP_ROLL],  &roll_stab_output,     &rcRoll,  5, 1, 0, DIRECT);
+PID PIDYawStab   (       &yawRate,        &yaw_stab_output,      &rcYaw,   5, 1, 0, DIRECT); // No yaw, utilizará a taxa de rotação, não a posição como referência.
 
 /* Configuração dos endereços da EEPROM para armazenar os PIDs */
 const int EEPROM_PITCH_P = 0;

      yaw_target = ypr_degree[DMP_YAW];   // remember this yaw for when pilot stops
    }

    motors[MOTOR_FL] = rcThrottle + roll_stab_output + pitch_stab_output - yaw_stab_output;
    motors[MOTOR_BL] = rcThrottle + roll_stab_output - pitch_stab_output + yaw_stab_output;
    motors[MOTOR_FR] = rcThrottle - roll_stab_output + pitch_stab_output + yaw_stab_output;

VectorFloat gravity; // [x, y, z]            Vetor de gravidade
float ypr[3]; // [yaw, pitch, roll]   Container do yaw/pitch/roll e do vetor de gravidade
double ypr_degree[3]; // [yaw, pitch, roll]   Container do yaw/pitch/roll e do vetor de gravidade em graus/segundo
double yawRate; // Velocidade de rotação do eixo yaw

const int DMP_YAW = 0;
const int DMP_PITCH = 1;
