FOXBAJA
/
BNO055
Código base
Revision 0:54d4bcb1c653, committed 2021-07-06
- Comitter:
- diogonac
- Date:
- Tue Jul 06 19:55:14 2021 +0000
- Commit message:
- 1
Changed in this revision
diff -r 000000000000 -r 54d4bcb1c653 BNO055.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BNO055.lib Tue Jul 06 19:55:14 2021 +0000 @@ -0,0 +1,1 @@ +http://os.mbed.com/users/StressedDave/code/BNO055/#1f722ffec323
diff -r 000000000000 -r 54d4bcb1c653 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Jul 06 19:55:14 2021 +0000 @@ -0,0 +1,103 @@ +#include "mbed.h" +#include "BNO055.h" + +#define taxa_de_amostragem 10 //100 Hz (10ms) + +Serial pc (D1, D0); //Comunicação com USB TX, RX + + +BNO055 BNO055(D14, D15); //Define as portas SDA/SCL do BNO055 +float aceleracao_linear[3]; + +Timer t_dados; // timer para taxa de aquisicao dos dados +int tx_aquisicao; //quantos pontos serao plotados em um segundo +int t_amostragem; //valor do timer do Main + +Timer check_status; + +void configuracao_BNO055(void); +void calibracao_BNO055(void); + +int main() +{ + + pc.baud(115200); //Define a velocidade da porta USB + t_dados.start(); + tx_aquisicao = 100; + configuracao_BNO055(); + calibracao_BNO055(); + + + while(1) { + + check_status.start(); + + if (t_amostragem >= 1000000/tx_aquisicao % BNO055.check() == true) { + t_dados.reset(); + BNO055.SetExternalCrystal(true); //Indica a existencia de um cristal externo + BNO055.get_angles(); + BNO055.get_accel(); + aceleracao_linear[0] = BNO055.lia.x; + aceleracao_linear[1] = BNO055.lia.y; + aceleracao_linear[2] = BNO055.lia.z; +// pc.printf("YAW= %f, ROLL= %f, PITCH= %f \r\n", BNO055.euler.yaw, BNO055.euler.roll, BNO055.euler.pitch); + //pc.printf("%f,%f,%f \r\n", BNO055.euler.yaw, BNO055.euler.roll, BNO055.euler.pitch); + + //pc.printf("%f,%f,%f\n", aceleracao_linear[0], aceleracao_linear[1], aceleracao_linear[2]); + pc.printf("AX= %f, AY= %f, AZ= %f \r\n", BNO055.accel.x, BNO055.accel.y, BNO055.accel.z); + + //pc.printf("Tempo= %d", check_status.read_ms()); + check_status.reset(); + + } else { + + pc.printf("Status BNO055: %d\r\n", BNO055.check()); //Verifica se tem comunicação com o BNO055 + + configuracao_BNO055(); + calibracao_BNO055(); + + } + + + //wait_ms(taxa_de_amostragem); + + } +} + +void configuracao_BNO055() +{ + + //============= Configurações iniciais no BNO055 ================ + BNO055.reset(); //Reseta o BNO055 + //pc.printf("Status BNO055: %d\r\n", BNO055.check()); //Verifica se tem comunicação com o BNO055 + wait_ms(650); + BNO055.setpowermode(POWER_MODE_NORMAL); //Define o modo de alimentação do BNO055 + wait_ms(25); //Aguarda a troca de modo de alimentação + BNO055.setmode(OPERATION_MODE_IMUPLUS); //Configura o modo padrão para iniciar a calibração + wait_ms(25); //Aguarda o BNO055 trocar de modo de operação + + +//============= Unidade das variáveis do BNO055 ================ + BNO055.set_accel_units(MPERSPERS); // m/s2 + BNO055.set_anglerate_units(DEG_PER_SEC); // graus°/s + BNO055.set_angle_units(DEGREES); // graus° + BNO055.set_temp_units(CENTIGRADE); // °C + BNO055.set_orientation(ANDROID); // Sentido de rotação ANDROID = Regra da mão direita + +} + +void calibracao_BNO055() +{ + +//=================== Calibração do BNO055 ===================== + BNO055.read_calibration_data(); //Calibração dos sensores + wait_ms(10); + BNO055.write_calibration_data(); //Calibração dos sensores + wait_ms(10); + BNO055.setmode(OPERATION_MODE_IMUPLUS); //Configura o mode de fusão entre acelerômetro e giroscópio taxa de atualização máxima: 100Hz + wait_ms(25); //Aguarda o BNO055 trocar de modo de operação + +} + + +
diff -r 000000000000 -r 54d4bcb1c653 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Jul 06 19:55:14 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file