Sérgio Natan
/
luva_tatil_repo
teste
main.cpp@0:cf17b1f16335, 2017-10-24 (annotated)
- Committer:
- sergionatan
- Date:
- Tue Oct 24 20:12:54 2017 +0000
- Revision:
- 0:cf17b1f16335
Initial commit
Who changed what in which revision?
User | Revision | Line number | New 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 | } |