teste

Dependencies:   BurstSPI Fonts

Committer:
sergionatan
Date:
Tue Oct 24 20:12:54 2017 +0000
Revision:
0:cf17b1f16335
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sergionatan 0:cf17b1f16335 1 #include "mbed.h"
sergionatan 0:cf17b1f16335 2 #include "ST7735_TFT.h"
sergionatan 0:cf17b1f16335 3 #include "Arial24x23i.h"
sergionatan 0:cf17b1f16335 4 #include "Arial11x11.h"
sergionatan 0:cf17b1f16335 5 #include "Arial9x9.h"
sergionatan 0:cf17b1f16335 6 #include "MPU6050.h"
sergionatan 0:cf17b1f16335 7 #include "MMA8451Q.h"
sergionatan 0:cf17b1f16335 8
sergionatan 0:cf17b1f16335 9 #define MMA8451_I2C_ADDRESS (0x1d<<1)
sergionatan 0:cf17b1f16335 10
sergionatan 0:cf17b1f16335 11 Serial pc(USBTX, USBRX); // tx, rx default baud rate: 9600
sergionatan 0:cf17b1f16335 12
sergionatan 0:cf17b1f16335 13 void compFilter();
sergionatan 0:cf17b1f16335 14 void preparePeriferals();
sergionatan 0:cf17b1f16335 15
sergionatan 0:cf17b1f16335 16 MPU6050 mpu6050; // class: MPU6050, object: mpu6050
sergionatan 0:cf17b1f16335 17 PinName const SDA = PTE25;
sergionatan 0:cf17b1f16335 18 PinName const SCL = PTE24;
sergionatan 0:cf17b1f16335 19 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); //on-board accelerometer
sergionatan 0:cf17b1f16335 20 //ST7735_TFT lcd(PTD6, NC, PTD5, PTA13, PTD2, PTD4, "TFT"); // TFT; sda, miso (not connected), sck, cs, AO(rs), reset
sergionatan 0:cf17b1f16335 21 Ticker systick;
sergionatan 0:cf17b1f16335 22
sergionatan 0:cf17b1f16335 23 float pitchAngle = 0;
sergionatan 0:cf17b1f16335 24 float rollAngle = 0;
sergionatan 0:cf17b1f16335 25 float rollX = 0;
sergionatan 0:cf17b1f16335 26 float pitchY = 0;
sergionatan 0:cf17b1f16335 27 int main()
sergionatan 0:cf17b1f16335 28 {
sergionatan 0:cf17b1f16335 29
sergionatan 0:cf17b1f16335 30 pc.baud(9600); // baud rate: 9600
sergionatan 0:cf17b1f16335 31 mpu6050.whoAmI(); // Communication test: WHO_AM_I register reading
sergionatan 0:cf17b1f16335 32 wait(1);
sergionatan 0:cf17b1f16335 33 mpu6050.calibrate(accelBias,gyroBias); // Calibrate MPU6050 and load biases into bias registers
sergionatan 0:cf17b1f16335 34 pc.printf("Calibration is completed. \r\n");
sergionatan 0:cf17b1f16335 35 wait(0.5);
sergionatan 0:cf17b1f16335 36 mpu6050.init(); // Initialize the sensor
sergionatan 0:cf17b1f16335 37 wait(1);
sergionatan 0:cf17b1f16335 38 pc.printf("MPU6050 is initialized for operation.. \r\n\r\n");
sergionatan 0:cf17b1f16335 39 wait_ms(500);
sergionatan 0:cf17b1f16335 40 systick.attach(&compFilter, 0.005); // calls the complementaryFilter func. every 5 ms (200 Hz sampling period)
sergionatan 0:cf17b1f16335 41 while (true)
sergionatan 0:cf17b1f16335 42 {
sergionatan 0:cf17b1f16335 43 atan (ax);
sergionatan 0:cf17b1f16335 44 //pc.printf("Accelerometer (onboard) X = %1.2f, Y = %1.2f, Z = %1.2f\r\n", acc.getAccX(), acc.getAccY(), acc.getAccZ());
sergionatan 0:cf17b1f16335 45 pc.printf("Accelerometer MPU6050(g) X = %.3f, Y = %.3f, Z = %.3f\r\n", ax, ay, az);
sergionatan 0:cf17b1f16335 46 pc.printf("Gyroscope MPU6050(deg/s) gx = %.3f, gy = %.3f, gz = %.3f\r\n", gx, gy, gz);
sergionatan 0:cf17b1f16335 47 pc.printf("Gyroscope MPU6050(deg/s) roll = %.3f, pitch = %.3f\r\n",rollAngle, pitchAngle);
sergionatan 0:cf17b1f16335 48 wait(1.0f);
sergionatan 0:cf17b1f16335 49
sergionatan 0:cf17b1f16335 50 }
sergionatan 0:cf17b1f16335 51 }
sergionatan 0:cf17b1f16335 52 void compFilter() {
sergionatan 0:cf17b1f16335 53 mpu6050.complementaryFilter(&pitchAngle, &rollAngle);
sergionatan 0:cf17b1f16335 54 }