Código base

Dependencies:   mbed BNO055

Files at this revision

API Documentation at this revision

Comitter:
diogonac
Date:
Tue Jul 06 19:55:14 2021 +0000
Commit message:
1

Changed in this revision

BNO055.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
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