ARDUINO 代码复制打印 1. #include "Wire.h" 2. #include "I2Cdev.h" 3. #include "MPU6050.h" 4. MPU6050 accelgyro; 5. int16_t ax, ay, az; 6. int16_t gx, gy, gz; 7. 8. float C_Z = -1343.91;//Z轴零点偏移量 9. float C_Gyro = -99.90;//陀螺仪零点偏移量 10. float Z_Min = -17873.76;//最小极值 11. float Z_Max = 15186.91;//最大极值 12. float T_Z = 3;//Z轴角度补偿时间常数 13. float R_Z = 180/(Z_Max - Z_Min);//Z轴比例 14. float R_Gyro = 0.081;//陀螺仪比例 15. unsigned long T_Now =0;//系统当前时间 16. unsigned long T_Last;//上次时间 17. float Angle_G,Angle_AG,Angle_GG; 18. int i; 19. float GYRO; 20. 21. void setup() { 22. Wire.begin(); 23. Serial.begin(38400); 24. // initialize device 25. Serial.println("Initializing I2C devices..."); 26. accelgyro.initialize(); 27. // verify connection 28. Serial.println("Testing device connections..."); 29. Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed"); 30. } 31. 32. void loop() { 33. accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); //读取6050数据 34. if (i>20) 35. { 36. GYRO = GYRO/20; 37. float Angle_Z = (az-C_Z)*R_Z;//加速度计 角度计算 (读取值-偏移量)*比例 单位:° 38. Angle_G = -(GYRO-C_Gyro)*R_Gyro;//陀螺仪采样 (采样值-偏移量)*比例 单位:°/s 39. Angle_AG = Angle_AG + (((Angle_Z-Angle_AG)*1/T_Z)+Angle_G)*0.005;//滤波 40. Angle_GG = Angle_GG + Angle_G*0.005;//陀螺仪对X轴积分 得出角度。 41. Serial.print(Angle_Z); 42. Serial.print(","); 43. Serial.print(Angle_GG); 44. Serial.print(","); 45. Serial.print(Angle_AG); 46. Serial.print("\n"); 47. i=0; 48. } 49. GYRO = GYRO + gx; 50. i++; 51. } 1. #include "Wire.h" 2. 3. #include "I2Cdev.h" 4. 5. #include "MPU6050.h" 6. 7. MPU6050 accelgyro; 8. 9. int16_t ax, ay, az; 10. 11. int16_t gx, gy, gz; 12. 13. 14. 15. float C_Z = -1343.91;//Z轴零点偏移量 16. 17. float C_Gyro = -99.90;//陀螺仪零点偏移量 18. 19. float Z_Min = -17873.76;//最小极值 20. 21. float Z_Max = 15186.91;//最大极值 22. 23. float T_Z = 3;//Z轴角度补偿时间常数 24. 25. float R_Z = 180/(Z_Max - Z_Min);//Z轴比例 26. 27. float R_Gyro = 0.081;//陀螺仪比例 28. 29. unsigned long T_Now =0;//系统当前时间 30. 31. unsigned long T_Last;//上次时间 32. 33. float Angle_G,Angle_AG,Angle_GG; 34. 35. int i; 36. 37. float GYRO; 38. 39. 40. 41. void setup() { 42. 43. Wire.begin(); 44. 45. Serial.begin(38400); 46. 47. // initialize device 48. 49. Serial.println("Initializing I2C devices..."); 50. 51. accelgyro.initialize(); 52. 53. // verify connection 54. 55. Serial.println("Testing device connections..."); 56. 57. Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed"); 58. 59. } 60. 61. 62. 63. void loop() { 64. 65. accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); //读取6050数据 66. 67. if (i>20) 68. 69. { 70. 71. GYRO = GYRO/20; 72. 73. float Angle_Z = (az-C_Z)*R_Z;//加速度计 角度计算 (读取值-偏移量)*比例 单位:° 74. 75. Angle_G = -(GYRO-C_Gyro)*R_Gyro;//陀螺仪采样 (采样值-偏移量)*比例 单位:°/s 76. 77. Angle_AG = Angle_AG + (((Angle_Z-Angle_AG)*1/T_Z)+Angle_G)*0.005;//滤波 78. 79. Angle_GG = Angle_GG + Angle_G*0.005;//陀螺仪对X轴积分 得出角度。 80. 81. Serial.print(Angle_Z); 82. 83. Serial.print(","); 84. 85. Serial.print(Angle_GG); 86. 87. Serial.print(","); 88. 89. Serial.print(Angle_AG); 90. 91. Serial.print("\n"); 92. 93. i=0; 94. 95. } 96. 97. GYRO = GYRO + gx; 98. 99. i++; 100. 101. } 102.
ARDUINO 代码复制打印 1. Serial.print(Angle_Z); 2. Serial.print(","); 3. Serial.print(Angle_GG); 4. Serial.print(","); 5. Serial.print(Angle_AG); 6. Serial.print("\n"); 1. Serial.print(Angle_Z); 2. 3. Serial.print(","); 4. 5. Serial.print(Angle_GG); 6. 7. Serial.print(","); 8. 9. Serial.print(Angle_AG); 10. 11. Serial.print("\n"); 12.
ARDUINO 代码复制打印 1. Serial.print(Angle_Z); 2. Serial.print("\t"); 3. Serial.print(Angle_GG); 4. Serial.print("\t"); 5. Serial.print(Angle_AG); 6. Serial.print("\n"); 1. Serial.print(Angle_Z); 2. 3. Serial.print("\t"); 4. 5. Serial.print(Angle_GG); 6. 7. Serial.print("\t"); 8. 9. Serial.print(Angle_AG); 10. 11. Serial.print("\n"); 12.
1. [_setup_] 2. 3. port=COM4 4. 5. baudrate=38400 6. 7. 8. width=1200 9. 10. height=600 11. 12. background_color = white 13. 14. 15. grid_h_origin = 200 16. 17. grid_h_step = 10 18. 19. grid_h_color = #EEE 20. 21. grid_h_origin_color = #CCC 22. 23. 24. grid_v_origin = 200 25. 26. grid_v_step = 10 27. 28. grid_v_color = #EEE 29. 30. grid_v_origin_color = transparent 31. 32. 33. [_default_] 34. 35. min=-100 36. 37. max=100 38. 39. 40. 41. [Angle_Z] 42. 43. color = red 44. 45. 46. [Angle_GG] 47. 48. color = orange 49. 50. 51. [Angle_AG] 52. 53. color = black 1. [_setup_] 2. 3. port=COM4 4. 5. baudrate=38400 6. 7. 8. 9. width=1200 10. 11. height=600 12. 13. background_color = white 14. 15. 16. 17. grid_h_origin = 200 18. 19. grid_h_step = 10 20. 21. grid_h_color = #EEE 22. 23. grid_h_origin_color = #CCC 24. 25. 26. 27. grid_v_origin = 200 28. 29. grid_v_step = 10 30. 31. grid_v_color = #EEE 32. 33. grid_v_origin_color = transparent 34. 35. 36. 37. [_default_] 38. 39. min=-100 40. 41. max=100 42. 43. 44. 45. 46. 47. [Angle_Z] 48. 49. color = red 50. 51. 52. 53. [Angle_GG] 54. 55. color = orange 56. 57. 58. 59. [Angle_AG] 60. 61. color = black 62.
ARDUINO 代码复制打印 1. Serial.print(Angle_Z); 2. Serial.print(","); 3. Serial.print(Angle_GG); 4. Serial.print(","); 5. Serial.print(Angle_AG); 6. Serial.print("\n"); 1. Serial.print(Angle_Z); 2. 3. Serial.print(","); 4. 5. Serial.print(Angle_GG); 6. 7. Serial.print(","); 8. 9. Serial.print(Angle_AG); 10. 11. Serial.print("\n"); 12. 这样,SerialChart,就可以认识你发送过来的数据了。 |
MPU6050数据分析
最新推荐文章于 2024-05-17 04:02:11 发布