-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathso_gyro.h
116 lines (107 loc) · 2.91 KB
/
so_gyro.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#ifndef GYRO_H
#define GYRO_H
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;
Adafruit_Sensor *mpu_temp;
int i_gyro_print_interval = 100;
long t_gyro_refresh = 0;
void MPU6050_init() {
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
for (int i = 0; i < 4; i++) {
digitalWrite(BUZZER, HIGH);
delay(100);
digitalWrite(BUZZER, LOW);
delay(100);
}
while (1) {
delay(1000);
Serial.println("Failed to find MPU6050 chip");
}
}
Serial.println("MPU6050 Found!");
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
Serial.print("Accelerometer range set to: ");
switch (mpu.getAccelerometerRange()) {
case MPU6050_RANGE_2_G:
Serial.println("+-2G");
break;
case MPU6050_RANGE_4_G:
Serial.println("+-4G");
break;
case MPU6050_RANGE_8_G:
Serial.println("+-8G");
break;
case MPU6050_RANGE_16_G:
Serial.println("+-16G");
break;
}
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
Serial.print("Gyro range set to: ");
switch (mpu.getGyroRange()) {
case MPU6050_RANGE_250_DEG:
Serial.println("+- 250 deg/s");
break;
case MPU6050_RANGE_500_DEG:
Serial.println("+- 500 deg/s");
break;
case MPU6050_RANGE_1000_DEG:
Serial.println("+- 1000 deg/s");
break;
case MPU6050_RANGE_2000_DEG:
Serial.println("+- 2000 deg/s");
break;
}
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
Serial.print("Filter bandwidth set to: ");
switch (mpu.getFilterBandwidth()) {
case MPU6050_BAND_260_HZ:
Serial.println("260 Hz");
break;
case MPU6050_BAND_184_HZ:
Serial.println("184 Hz");
break;
case MPU6050_BAND_94_HZ:
Serial.println("94 Hz");
break;
case MPU6050_BAND_44_HZ:
Serial.println("44 Hz");
break;
case MPU6050_BAND_21_HZ:
Serial.println("21 Hz");
break;
case MPU6050_BAND_10_HZ:
Serial.println("10 Hz");
break;
case MPU6050_BAND_5_HZ:
Serial.println("5 Hz");
break;
}
Serial.println("");
delay(100);
}
double gyro_z() {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
// if (millis() > t_gyro_refresh + i_gyro_print_interval) {
// //达到设定的gyro刷新频率后进行刷新
// t_gyro_refresh = millis();
// Serial.print("\tGyro Z: \t");
// Serial.println(a.acceleration.z);
// Serial.print("\t\tTemp: \t");
// Serial.println(temp.temperature);
// Serial.print("\t\t\tESP32 Hall: \t");
// Serial.println(hallRead());
// }
return (double)a.acceleration.z;
}
// float gyro_temp() {
// sensors_event_t temp;
// mpu.getEvent(&temp);
// Serial.print("Gyro Temp: \t");
// Serial.println(temp.temperature);
// return a.temperature;
// }
#endif