Created
September 22, 2022 15:31
-
-
Save dahmadjid/c86181c5153f0d192c3de0f00a0d4bf1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* @brief MPU6050 constructor. | |
*/ | |
void mpu6050_init(); | |
/** | |
* @brief: Get digital low-pass filter configuration. The DLPF_CFG parameter | |
* sets the digital low pass filter configuration. It also determines the | |
* internal sampling rate used by the device as shown in the table below. | |
* Note: The accelerometer output rate is 1kHz. This means that for a Sample | |
* Rate greater than 1kHz, the same accelerometer sample may be output to the | |
* FIFO, DMP, and sensor registers more than once. | |
* | |
* | ACCELEROMETER | GYROSCOPE | |
* DLPF_CFG | Bandwidth | Delay | Bandwidth | Delay | Sample Rate | |
* ---------+-----------+--------+-----------+--------+------------- | |
* 0 | 260Hz | 0ms | 256Hz | 0.98ms | 8kHz | |
* 1 | 184Hz | 2.0ms | 188Hz | 1.9ms | 1kHz | |
* 2 | 94Hz | 3.0ms | 98Hz | 2.8ms | 1kHz | |
* 3 | 44Hz | 4.9ms | 42Hz | 4.8ms | 1kHz | |
* 4 | 21Hz | 8.5ms | 20Hz | 8.3ms | 1kHz | |
* 5 | 10Hz | 13.8ms | 10Hz | 13.4ms | 1kHz | |
* 6 | 5Hz | 19.0ms | 5Hz | 18.6ms | 1kHz | |
* 7 | Reserved | Reserved | Reserved | |
* | |
* @return DLFP configuration. | |
*/ | |
uint8_t mpu6050_get_dlpf_mode(); | |
/** | |
* @brief Set digital low-pass filter configuration. | |
* | |
* @param mode New DLFP configuration setting. | |
*/ | |
void mpu6050_set_dlpf_mode(uint8_t mode); | |
/** | |
* @brief Get full-scale gyroscope range. The FS_SEL parameter allows setting | |
* the full-scale range of the gyro sensors, as described below: | |
* | |
* 0 = +/- 250 degrees/sec | |
* 1 = +/- 500 degrees/sec | |
* 2 = +/- 1000 degrees/sec | |
* 3 = +/- 2000 degrees/sec | |
* | |
* @return Current full-scale gyroscope range setting. | |
*/ | |
uint8_t mpu6050_get_full_scale_gyro_range(); | |
/** | |
* @brief Set full-scale gyroscope range. | |
* | |
* @param range New full-scale gyroscope range value. | |
*/ | |
void mpu6050_set_full_scale_gyro_range(uint8_t range); | |
/** | |
* @brief Get self-test factory trim value for accelerometer X axis. | |
* | |
* @return Factory trim value. | |
*/ | |
/** | |
* @brief Get full-scale accelerometer range. | |
* The FS_SEL parameter allows setting the full-scale range of the accelerometer | |
* sensors, as described below: | |
* | |
* 0 = +/- 2g | |
* 1 = +/- 4g | |
* 2 = +/- 8g | |
* 3 = +/- 16g | |
* | |
* @return Current full-scale accelerometer range setting. | |
*/ | |
uint8_t mpu6050_get_full_scale_accel_range(); | |
/** | |
* @brief Set full-scale accelerometer range. | |
* | |
* @param range New full-scale accelerometer range setting. | |
*/ | |
void mpu6050_set_full_scale_accel_range(uint8_t range); | |
/** | |
* @brief Get gyroscope output rate divider. The sensor register output, | |
* FIFO output, DMP sampling, Motion Detection, Zero Motion Detection, | |
* and Free Fall Detection are all based on the Sample Rate. | |
* The Sample Rate is generated by dividing the gyroscope output rate by | |
* SMPLRT_DIV: | |
* | |
* Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV) | |
* | |
* Where Gyroscope Output Rate = 8kHz when the DLPF is disabled (DLPF_CFG = 0 or | |
* 7), and 1kHz when the DLPF is enabled. | |
* | |
* Note: The accelerometer output rate is 1kHz. This means that for a Sample | |
* Rate greater than 1kHz, the same accelerometer sample may be output to the | |
* FIFO, DMP, and sensor registers more than once. | |
* | |
* @return Current sample rate. | |
*/ | |
uint8_t mpu6050_get_rate(); | |
/** | |
* @brief Set gyroscope output rate divider. | |
* | |
* @param rate New sample rate divider. | |
*/ | |
void mpu6050_set_rate(uint8_t rate); | |
/** | |
* @brief Calculates acceleration resolution. | |
* | |
* @param accel_scale Acceleration scale. The scale range values are described | |
* below: | |
* | |
* 0 = +/- 2g | |
* 1 = +/- 4g | |
* 2 = +/- 8g | |
* 3 = +/- 16g | |
* | |
* @return Resolution of the acceleration. | |
*/ | |
float mpu6050_get_accel_res(uint8_t accel_scale); | |
/** | |
* @brief Calculates rotation resolution. | |
* | |
* @param accel_scale Rotation scale. The scale range values are described | |
* below: | |
* | |
* 0 = +/- 250 degrees/sec | |
* 1 = +/- 500 degrees/sec | |
* 2 = +/- 1000 degrees/sec | |
* 3 = +/- 2000 degrees/sec | |
* | |
* @return Resolution of the acceleration. | |
*/ | |
float mpu6050_get_gyro_res(uint8_t gyro_scale); | |
/** | |
* @brief Function which accumulates gyro and accelerometer data after device | |
* initialization. It calculates the average of the at-rest readings and then | |
* loads the resulting offsets into accelerometer and gyro bias registers. | |
* | |
* @param accel_bias_res Acceleration bias resolution. | |
* @param gyro_bias_res Rotation bias resolution. | |
*/ | |
/** | |
* @brief Get raw 6-axis motion sensor readings (accel/gyro). | |
* Retrieves all currently available motion sensor values. | |
* | |
* @param data_accel pointer to acceleration struct. | |
* @param data_gyro pointer to rotation struct. | |
*/ | |
void mpu6050_get_motion | |
( | |
mpu6050_acceleration_t* data_accel, | |
mpu6050_rotation_t* data_gyro | |
); | |
// OUMBA3D edhorbou 3liha talla | |
/** | |
* @brief Function which accumulates gyro and accelerometer data after device | |
* initialization. It calculates the average of the at-rest readings and then | |
* loads the resulting offsets into accelerometer and gyro bias registers. | |
* | |
* @param accel_bias_res Acceleration bias resolution. | |
* @param gyro_bias_res Rotation bias resolution. | |
*/ | |
void mpu6050_calibrate(float *accel_bias_res, float *gyro_bias_res); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment