Esta biblioteca se comunica com unidades de medição inercial (IMUs) InvensenseMPU-6500 e InvenSense MPU-9250 e MPU-9255. Esta biblioteca é compatível com sistemas de construção Arduino e CMake.
O Invense MPU-6500 é um giroscópio de três eixos e um acelerômetro de três eixos. O InvenSense MPU-9250 é um System in Package (SiP) que combina dois chips: o giroscópio de três eixos MPU-6500 e o acelerômetro de três eixos; e o magnetômetro de três eixos AK8963. O MPU-6500 e MPU-9250 suportam comunicação I2C, até 400 kHz, e SPI, até 1 MHz para configuração de registro e 20 MHz para leitura de dados. As seguintes faixas selecionáveis de sensores de escala completa estão disponíveis:
Faixa de escala completa do giroscópio | Faixa de escala completa do acelerômetro | Faixa de escala completa do magnetômetro (somente MPU-9250) |
---|---|---|
+/- 250 graus/s | +/- 2g | +/- 4800 uT |
+/- 500 graus/s | +/- 4g | |
+/- 1000 graus/s | +/- 8g | |
+/- 2.000 graus/s | +/- 16g |
As IMUs amostram giroscópios, acelerômetros e magnetômetros com conversores analógicos para digitais de 16 bits. Ele também possui filtros digitais programáveis, um relógio de precisão e um sensor de temperatura integrado.
Use o Arduino Library Manager para instalar esta biblioteca ou clonar para sua pasta Arduino/libraries.
Para o MPU-6500, esta biblioteca é adicionada como:
# include " mpu6500.h "
Para o MPU-9250, esta biblioteca é adicionada como:
# include " mpu9250.h "
Exemplo de executáveis do Arduino estão localizados em: samples/arduino/ . Os dispositivos Teensy 3.x, 4.x e LC são usados para testes no Arduino e esta biblioteca deve ser compatível com outros dispositivos Arduino.
CMake é usado para construir esta biblioteca, que é exportada como um destino de biblioteca chamado invensense_imu .
Para o MPU-6500, esta biblioteca é adicionada como:
# include " mpu6500.h "
Para o MPU-9250, esta biblioteca é adicionada como:
# include " mpu9250.h "
A biblioteca também pode ser compilada de forma independente usando o idioma CMake para criar um diretório de construção e, a partir desse diretório, emitir:
cmake .. -DMCU=MK66FX1M0
make
Isso criará a biblioteca e os executáveis de exemplo chamados i2c_example , spi_example , drdy_spi_example e wom_example (somente MPU-9250). Os arquivos de origem executáveis de exemplo estão localizados em exemplos/cmake . Observe que o comando cmake inclui uma definição especificando o microcontrolador para o qual o código está sendo compilado. Isso é necessário para configurar corretamente o código, a frequência da CPU e as opções de compilação/vinculador. Os MCUs disponíveis são:
Sabe-se que eles funcionam com as mesmas embalagens usadas nos produtos Teensy. Sabe-se também que a troca de pacotes funciona bem, desde que seja apenas uma mudança de pacote.
Os alvos de exemplo criam executáveis para comunicação com o sensor usando comunicação I2C ou SPI, usando a interrupção de dados prontos e usando a interrupção de ativação por movimento, respectivamente. Cada alvo também possui um _hex , para criar o arquivo hexadecimal para fazer upload para o microcontrolador, e um _upload para usar o Teensy CLI Uploader para atualizar o Teensy. Observe que as instruções para configurar seu ambiente de construção podem ser encontradas em nosso repositório de ferramentas de construção.
Esta biblioteca está dentro do namespace bfs .
Esta classe fornece métodos para leitura e gravação em registros desses sensores. Espera-se que isso funcione pelo menos com MPU-6000, MPU-6050, MPU-6500, MPU-9150 e MPU-9250; embora também possa funcionar para outros sensores. A maioria dos usuários provavelmente preferirá as classes específicas de sensores abaixo; no entanto, esta classe pode permitir que as pessoas desbloqueiem maiores funcionalidades e usem como ponto de partida para seus próprios drivers de sensor.
InvensenseImu() Construtor padrão, requer a chamada do método Config para configurar o barramento I2C ou SPI e o endereço I2C ou o pino de seleção do chip SPI.
InvensenseImu(TwoWire *i2c, const uint8_t addr) Cria um objeto InvensenseImu. Este construtor é usado para a interface de comunicação I2C. Um ponteiro para o objeto do barramento I2C é passado junto com o endereço I2C do sensor.
InvensenseImu(SPIClass *bus, uint8_t cs) Cria um objeto InvensenseImu. Este construtor é usado para a interface de comunicação SPI. Um ponteiro para o objeto do barramento SPI é passado junto com o pino de seleção de chip do sensor. Qualquer pino capaz de E/S digital pode ser usado como pino de seleção de chip.
void Config(TwoWire *bus, const uint8_t addr) Isso é necessário ao usar o construtor padrão e configura o barramento I2C e o endereço I2C.
void Config(SPIClass *spi, const uint8_t cs) Isso é necessário ao usar o construtor padrão e configura o barramento SPI e o pino de seleção do chip.
void Begin() Inicializa a comunicação com o sensor. O barramento de comunicação não é inicializado nesta biblioteca e deve ser inicializado separadamente; isso aumenta a compatibilidade com outros sensores que podem estar no mesmo barramento.
bool WriteRegister(const uint8_t reg, const uint8_t data, const int32_t spi_clock) Grava dados de registro no sensor, considerando o endereço de registro e os dados. A velocidade do clock SPI deve ser especificada se a comunicação SPI for usada.
bool WriteRegister(const uint8_t reg, const uint8_t data) Sobrecarga acima onde a comunicação I2C é usada.
bool ReadRegisters(const uint8_t reg, const uint8_t count, const int32_t spi_clock, uint8_t * const data) Lê os dados do registro do sensor, considerando o endereço do registro, o número de registros a serem lidos, o relógio SPI e um ponteiro para armazenar os dados.
bool ReadRegisters(const uint8_t reg, const uint8_t count, uint8_t * const data) Sobrecarga acima onde a comunicação I2C é usada.
Esta classe funciona com as IMUs MPU-9250 e MPU-9255.
Mpu9250() Construtor padrão, requer a chamada do método Config para configurar o barramento I2C ou SPI e o endereço I2C ou o pino de seleção do chip SPI.
Mpu9250(i2c_t3 *bus, I2cAddr addr) Cria um objeto Mpu9250. Este construtor é usado para a interface de comunicação I2C. Um ponteiro para o objeto do barramento I2C é passado junto com o endereço I2C do sensor. O endereço será I2C_ADDR_PRIM (0x68) se o pino AD0 estiver aterrado e I2C_ADDR_SEC (0x69) se o pino AD0 estiver puxado para cima.
Mpu9250 mpu9250 (&Wire, bfs::Mpu9250::I2C_ADDR_PRIM);
Mpu9250(SPIClass *bus, uint8_t cs) Cria um objeto Mpu9250. Este construtor é usado para a interface de comunicação SPI. Um ponteiro para o objeto do barramento SPI é passado junto com o pino de seleção de chip do sensor. Qualquer pino capaz de E/S digital pode ser usado como pino de seleção de chip.
Mpu9250 mpu9250 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr) Isso é necessário ao usar o construtor padrão e configura o barramento I2C e o endereço I2C. O endereço será I2C_ADDR_PRIM (0x68) se o pino AD0 estiver aterrado e I2C_ADDR_SEC (0x69) se o pino AD0 estiver puxado para cima.
void Config(SPIClass *spi, const uint8_t cs) Isso é necessário ao usar o construtor padrão e configura o barramento SPI e o pino de seleção do chip.
bool Begin() Inicializa a comunicação com o sensor e configura os intervalos padrão do sensor, taxas de amostragem e configurações de filtro passa-baixo. A faixa padrão do acelerômetro é +/- 16g e a faixa padrão do giroscópio é +/- 2.000 graus/s. A taxa de amostragem padrão é 1000 Hz e o filtro passa-baixa é definido para uma frequência de corte de 184 Hz. True será retornado se a comunicação puder ser estabelecida com o sensor e a configuração for concluída com êxito; caso contrário, false será retornado. O barramento de comunicação não é inicializado nesta biblioteca e deve ser inicializado separadamente; isso aumenta a compatibilidade com outros sensores que podem estar no mesmo barramento.
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu9250.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt() Habilita a interrupção de dados prontos. Uma interrupção de 50 us será acionada no pino INT do MPU-9250 quando os dados da IMU estiverem prontos. Esta interrupção está ativa em nível alto. Este método retorna verdadeiro se a interrupção for habilitada com sucesso, caso contrário, falso é retornado.
bool status = mpu9250.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt() Desativa a interrupção de dados prontos. Este método retorna verdadeiro se a interrupção for desabilitada com sucesso, caso contrário, falso é retornado.
bool status = mpu9250.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range) Define a faixa de escala completa do acelerômetro. As opções são:
Faixa | Valor de enumeração |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/- 4g | ACCEL_RANGE_4G |
+/- 8g | ACCEL_RANGE_8G |
+/- 16g | ACCEL_RANGE_16G |
True é retornado ao definir com sucesso a faixa do acelerômetro, caso contrário, false é retornado. O intervalo padrão é +/-16g.
bool status = mpu9250.ConfigAccelRange(bfs::Mpu9250::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range() Retorna a faixa atual do acelerômetro.
AccelRange range = mpu9250.accel_range();
bool ConfigGyroRange(const GyroRange range) Define a faixa completa da escala do giroscópio. As opções são:
Faixa | Valor de enumeração |
---|---|
+/- 250 graus/s | GYRO_RANGE_250DPS |
+/- 500 graus/s | GYRO_RANGE_500DPS |
+/- 1000 graus/s | GYRO_RANGE_1000DPS |
+/- 2.000 graus/s | GYRO_RANGE_2000DPS |
True é retornado ao definir com sucesso o alcance do giroscópio, caso contrário, false é retornado. O intervalo padrão é +/-2.000 graus/s.
bool status = mpu9250.ConfigGyroRange(bfs::Mpu9250::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range() Retorna a faixa atual do giroscópio.
GyroRange range = mpu9250.gyro_range();
bool ConfigSrd(const uint8_t srd) Define o divisor da taxa de amostragem do sensor. O MPU-9250 amostra o acelerômetro e o giroscópio a uma taxa, em Hz, definida por:
Uma configuração srd de 0 significa que o MPU-9250 amostra o acelerômetro e o giroscópio a 1000 Hz. Uma configuração srd de 4 definiria a amostragem em 200 Hz. A interrupção de dados prontos da IMU está vinculada à taxa definida pelo divisor de taxa de amostragem. O magnetômetro é amostrado a 100 Hz para valores do divisor de taxa de amostragem correspondentes a 100 Hz ou superiores. Caso contrário, o magnetômetro é amostrado a 8 Hz.
True é retornado ao definir com sucesso o divisor de taxa de amostragem, caso contrário, false é retornado. O valor padrão do divisor da taxa de amostragem é 0, resultando em uma taxa de amostragem de 1000 Hz.
/* Set sample rate divider for 50 Hz */
bool status = mpu9250.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd() Retorna o valor atual do divisor da taxa de amostragem.
uint8_t srd = mpu9250.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf) Define a frequência de corte do filtro passa-baixa digital para o acelerômetro, giroscópio e sensor de temperatura. As larguras de banda disponíveis são:
Largura de banda DLPF | Valor de enumeração |
---|---|
184Hz | DLPF_BANDWIDTH_184HZ |
92Hz | DLPF_BANDWIDTH_92HZ |
41Hz | DLPF_BANDWIDTH_41HZ |
20Hz | DLPF_BANDWIDTH_20HZ |
10Hz | DLPF_BANDWIDTH_10HZ |
5Hz | DLPF_BANDWIDTH_5HZ |
True é retornado após a configuração bem-sucedida dos filtros digitais passa-baixo, caso contrário, false é retornado. A largura de banda padrão é 184 Hz.
bool status = mpu9250.ConfigDlpfBandwidth(bfs::Mpu9250::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth() Retorna a configuração atual da largura de banda do filtro passa-baixo digital.
DlpfBandwidth dlpf = mpu9250.dlpf_bandwidth();
bool EnableWom(int16_t limiar_mg, const WomRate wom_rate) Habilita a interrupção Wake-On-Motion. Ele coloca o MPU-9250 em um estado de baixo consumo de energia, despertando em um intervalo determinado pelo WomRate . Se o acelerômetro detectar movimento além do limite, limiar_mg , ele gerará um pulso de 50us a partir do pino de interrupção MPU-9250. As seguintes taxas WOM enumeradas são suportadas:
Taxa de amostragem WOM | Valor de enumeração |
---|---|
0,24Hz | WOM_RATE_0_24HZ |
0,49Hz | WOM_RATE_0_49HZ |
0,98Hz | WOM_RATE_0_98HZ |
1,95Hz | WOM_RATE_1_95HZ |
3,91Hz | WOM_RATE_3_91HZ |
7,81Hz | WOM_RATE_7_81HZ |
15,63Hz | WOM_RATE_15_63HZ |
31,25Hz | WOM_RATE_31_25HZ |
62,50Hz | WOM_RATE_62_50HZ |
125Hz | WOM_RATE_125HZ |
250Hz | WOM_RATE_250HZ |
500Hz | WOM_RATE_500HZ |
O limite de movimento é fornecido como um valor entre 4 e 1020 mg, que é mapeado internamente para um único byte, valor 1-255. Esta função retorna verdadeiro ao ativar Wake On Motion com sucesso, caso contrário retorna falso. Por favor, veja o exemplo wom_i2c . A seguir está um exemplo de ativação do wake on motion com um limite de 40 mg e uma ODR de 31,25 Hz.
imu.EnableWom( 40 , bfs::Mpu9250::WOM_RATE_31_25HZ);
void Reset() Reinicializa o MPU-9250.
bool Read() Lê dados do MPU-9250 e armazena os dados no objeto Mpu9250. Retorna verdadeiro se os dados forem lidos com sucesso; caso contrário, retorna falso.
/* Read the IMU data */
if (mpu9250.Read()) {
}
bool new_imu_data() Retorna verdadeiro se novos dados foram retornados do acelerômetro e giroscópio.
if (mpu9250.Read()) {
bool new_data = mpu9250. new_imu_data ();
}
bool new_mag_data() Retorna verdadeiro se novos dados foram retornados do magnetômetro. Para taxas de amostragem do MPU-9250 de 100 Hz e superiores, o magnetômetro é amostrado a 100 Hz. Para taxas de amostragem MPU-9250 inferiores a 100 Hz, o magnetômetro é amostrado a 8 Hz, portanto, não é incomum receber novos dados de IMU, mas não novos dados de magnetômetro.
if (mpu9250.Read()) {
bool new_mag = mpu9250. new_mag_data ();
}
float accel_x_mps2() Retorna os dados do acelerômetro x do objeto Mpu9250 em unidades de m/s/s. Existem métodos semelhantes para os dados dos eixos y e z.
/* Read the IMU data */
if (mpu9250.Read()) {
float ax = mpu9250. accel_x_mps2 ();
float ay = mpu9250. accel_y_mps2 ();
float az = mpu9250. accel_z_mps2 ();
}
float gyro_x_radps() Retorna os dados do giroscópio x do objeto Mpu9250 em unidades de rad/s. Existem métodos semelhantes para os dados dos eixos y e z.
/* Read the IMU data */
if (mpu9250.Read()) {
float gx = mpu9250. gyro_x_radps ();
float gy = mpu9250. gyro_y_radps ();
float gz = mpu9250. gyro_z_radps ();
}
float mag_x_ut() Retorna os dados do magnetômetro x do objeto Mpu9250 em unidades de uT. Existem métodos semelhantes para os dados dos eixos y e z.
/* Read the IMU data */
if (mpu9250.Read()) {
float hx = mpu9250. mag_x_ut ();
float hy = mpu9250. mag_y_ut ();
float hz = mpu9250. mag_z_ut ();
}
float die_temp_c() Retorna a temperatura da matriz do sensor em unidades de C.
/* Read the IMU data */
if (mpu9250.Read()) {
float temp = mpu9250. die_temp_c ();
}
Esta classe funciona com o sensor MPU-6500.
Mpu6500() Construtor padrão, requer a chamada do método Config para configurar o barramento I2C ou SPI e o endereço I2C ou o pino de seleção do chip SPI.
Mpu6500(i2c_t3 *bus, I2cAddr addr) Cria um objeto Mpu6500. Este construtor é usado para a interface de comunicação I2C. Um ponteiro para o objeto do barramento I2C é passado junto com o endereço I2C do sensor. O endereço será I2C_ADDR_PRIM (0x68) se o pino AD0 estiver aterrado e I2C_ADDR_SEC (0x69) se o pino AD0 estiver puxado para cima.
Mpu6500 mpu6500 (&Wire, bfs::Mpu6500::I2C_ADDR_PRIM);
Mpu6500(SPIClass *bus, uint8_t cs) Cria um objeto Mpu6500. Este construtor é usado para a interface de comunicação SPI. Um ponteiro para o objeto do barramento SPI é passado junto com o pino de seleção de chip do sensor. Qualquer pino capaz de E/S digital pode ser usado como pino de seleção de chip.
Mpu6500 mpu6500 (&SPI, 2 );
void Config(TwoWire *bus, const I2cAddr addr) Isso é necessário ao usar o construtor padrão e configura o barramento I2C e o endereço I2C. O endereço será I2C_ADDR_PRIM (0x68) se o pino AD0 estiver aterrado e I2C_ADDR_SEC (0x69) se o pino AD0 estiver puxado para cima.
void Config(SPIClass *spi, const uint8_t cs) Isso é necessário ao usar o construtor padrão e configura o barramento SPI e o pino de seleção do chip.
bool Begin() Inicializa a comunicação com o sensor e configura os intervalos padrão do sensor, taxas de amostragem e configurações de filtro passa-baixo. A faixa padrão do acelerômetro é +/- 16g e a faixa padrão do giroscópio é +/- 2.000 graus/s. A taxa de amostragem padrão é 1000 Hz e o filtro passa-baixa é definido para uma frequência de corte de 184 Hz. True será retornado se a comunicação puder ser estabelecida com o sensor e a configuração for concluída com êxito; caso contrário, false será retornado. O barramento de comunicação não é inicializado nesta biblioteca e deve ser inicializado separadamente; isso aumenta a compatibilidade com outros sensores que podem estar no mesmo barramento.
Wire.begin();
Wire.setClock( 400000 );
bool status = mpu6500.Begin();
if (!status) {
// ERROR
}
bool EnableDrdyInt() Habilita a interrupção de dados prontos. Uma interrupção de 50 us será acionada no pino INT do MPU-9250 quando os dados da IMU estiverem prontos. Esta interrupção está ativa em nível alto. Este método retorna verdadeiro se a interrupção for habilitada com sucesso, caso contrário, falso é retornado.
bool status = mpu6500.EnableDrdyInt();
if (!status) {
// ERROR
}
bool DisableDrdyInt() Desativa a interrupção de dados prontos. Este método retorna verdadeiro se a interrupção for desabilitada com sucesso, caso contrário, falso é retornado.
bool status = mpu6500.DisableDrdyInt();
if (!status) {
// ERROR
}
bool ConfigAccelRange(const AccelRange range) Define a faixa de escala completa do acelerômetro. As opções são:
Faixa | Valor de enumeração |
---|---|
+/- 2g | ACCEL_RANGE_2G |
+/- 4g | ACCEL_RANGE_4G |
+/- 8g | ACCEL_RANGE_8G |
+/- 16g | ACCEL_RANGE_16G |
True é retornado ao definir com sucesso a faixa do acelerômetro, caso contrário, false é retornado. O intervalo padrão é +/-16g.
bool status = mpu6500.ConfigAccelRange(bfs::Mpu6500::ACCEL_RANGE_4G);
if (!status) {
// ERROR
}
AccelRange accel_range() Retorna a faixa atual do acelerômetro.
AccelRange range = mpu6500.accel_range();
bool ConfigGyroRange(const GyroRange range) Define a faixa completa da escala do giroscópio. As opções são:
Faixa | Valor de enumeração |
---|---|
+/- 250 graus/s | GYRO_RANGE_250DPS |
+/- 500 graus/s | GYRO_RANGE_500DPS |
+/- 1000 graus/s | GYRO_RANGE_1000DPS |
+/- 2.000 graus/s | GYRO_RANGE_2000DPS |
True é retornado ao definir com sucesso o alcance do giroscópio, caso contrário, false é retornado. O intervalo padrão é +/-2.000 graus/s.
bool status = mpu6500.ConfigGyroRange(bfs::Mpu6500::GYRO_RANGE_1000DPS);
if (!status) {
// ERROR
}
GyroRange gyro_range() Retorna a faixa atual do giroscópio.
GyroRange range = mpu6500.gyro_range();
bool ConfigSrd(const uint8_t srd) Define o divisor da taxa de amostragem do sensor. O MPU-9250 amostra o acelerômetro e o giroscópio a uma taxa, em Hz, definida por:
Uma configuração srd de 0 significa que o MPU-9250 amostra o acelerômetro e o giroscópio a 1000 Hz. Uma configuração srd de 4 definiria a amostragem em 200 Hz. A interrupção de dados prontos da IMU está vinculada à taxa definida pelo divisor de taxa de amostragem. O magnetômetro é amostrado a 100 Hz para valores do divisor de taxa de amostragem correspondentes a 100 Hz ou superiores. Caso contrário, o magnetômetro é amostrado a 8 Hz.
True é retornado ao definir com sucesso o divisor de taxa de amostragem, caso contrário, false é retornado. O valor padrão do divisor da taxa de amostragem é 0, resultando em uma taxa de amostragem de 1000 Hz.
/* Set sample rate divider for 50 Hz */
bool status = mpu6500.sample_rate_divider( 19 );
if (!status) {
// ERROR
}
uint8_t srd() Retorna o valor atual do divisor da taxa de amostragem.
uint8_t srd = mpu6500.srd();
bool ConfigDlpfBandwidth(const DlpfBandwidth dlpf) Define a frequência de corte do filtro passa-baixa digital para o acelerômetro, giroscópio e sensor de temperatura. As larguras de banda disponíveis são:
Largura de banda DLPF | Valor de enumeração |
---|---|
184Hz | DLPF_BANDWIDTH_184HZ |
92Hz | DLPF_BANDWIDTH_92HZ |
41Hz | DLPF_BANDWIDTH_41HZ |
20Hz | DLPF_BANDWIDTH_20HZ |
10Hz | DLPF_BANDWIDTH_10HZ |
5Hz | DLPF_BANDWIDTH_5HZ |
True é retornado após a configuração bem-sucedida dos filtros digitais passa-baixo, caso contrário, false é retornado. A largura de banda padrão é 184 Hz.
bool status = mpu6500.ConfigDlpfBandwidth(bfs::Mpu6500::DLPF_BANDWIDTH_20HZ);
if (!status) {
// ERROR
}
DlpfBandwidth dlpf_bandwidth() Retorna a configuração atual da largura de banda do filtro passa-baixo digital.
DlpfBandwidth dlpf = mpu6500.dlpf_bandwidth();
bool Read() Lê dados do MPU-6500 e armazena os dados no objeto Mpu6500. Retorna verdadeiro se os dados forem lidos com sucesso; caso contrário, retorna falso.
/* Read the IMU data */
if (mpu6500.Read()) {
}
bool new_imu_data() Retorna verdadeiro se novos dados foram retornados do acelerômetro e giroscópio.
if (mpu6500.Read()) {
bool new_data = mpu6500. new_imu_data ();
}
float accel_x_mps2() Retorna os dados do acelerômetro x do objeto Mpu6500 em unidades de m/s/s. Existem métodos semelhantes para os dados dos eixos y e z.
/* Read the IMU data */
if (mpu6500.Read()) {
float ax = mpu6500. accel_x_mps2 ();
float ay = mpu6500. accel_y_mps2 ();
float az = mpu6500. accel_z_mps2 ();
}
float gyro_x_radps() Retorna os dados do giroscópio x do objeto Mpu6500 em unidades de rad/s. Existem métodos semelhantes para os dados dos eixos y e z.
/* Read the IMU data */
if (mpu6500.Read()) {
float gx = mpu6500. gyro_x_radps ();
float gy = mpu6500. gyro_y_radps ();
float gz = mpu6500. gyro_z_radps ();
}
float die_temp_c() Retorna a temperatura da matriz do sensor em unidades de C.
/* Read the IMU data */
if (mpu6500.Read()) {
float temp = mpu6500. die_temp_c ();
}
Esta biblioteca transforma todos os dados em um sistema de eixos comum antes de serem retornados. Este sistema de eixos é mostrado abaixo. É um sistema de coordenadas para destros com o eixo z positivo para baixo, comum na dinâmica de aeronaves.
Cuidado! Este sistema de eixos é mostrado em relação ao sensor MPU-6500 e MPU-9250. O sensor pode ser girado em relação à placa de fuga.