Advertisement
Guest User

Untitled

a guest
Sep 10th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void getAngles() {
  2.   byte readed = getRegisters(MPU6050, MPU6050_ACCEL_XOUT_H, buffer, 14);
  3.  
  4.   if(readed == 14)
  5.   {
  6.     // gyro
  7.     float gyro_x = (int)word(buffer[8], buffer[9]);
  8.     float gyro_y = (int)word(buffer[10], buffer[11]);
  9.     Serial.print(mapf(gyro_x, -32768, 32767, -250, 250)); Serial.print("\t");
  10.     Serial.print(mapf(gyro_y, -32768, 32767, -250, 250)); Serial.println();
  11.     gyro_x = mapf(gyro_x - gyro_x_offset, -32768, 32767, -250, 250);
  12.     gyro_y = mapf(gyro_y - gyro_y_offset, -32768, 32767, -250, 250);
  13.    
  14.     // accelerometer
  15.     float accel_x = (int)word(buffer[0], buffer[1]);
  16.     float accel_y = (int)word(buffer[2], buffer[3]);
  17.     float accel_z = (int)word(buffer[4], buffer[5]);
  18.     accel_x = mapf(accel_x, -32768, 32767, -2, 2);
  19.     accel_y = mapf(accel_y, -32768, 32767, -2, 2);
  20.     accel_z = mapf(accel_z, -32768, 32767, -2, 2);
  21.     float accel_x_angle = atan2(accel_y, accel_z) * 180 / PI;
  22.     float accel_y_angle = atan2(accel_x, accel_z) * 180 / PI;
  23.     // complementary filter
  24.     /*
  25.     angle_x = 0.98 * (angle_x + gyro_x * dt / 1000.0) + 0.02 * accel_x_angle;
  26.     angle_y = 0.98 * (angle_y - gyro_y * dt / 1000.0) + 0.02 * accel_y_angle;
  27.     */
  28.   }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement