1
Dependencies: ArduinoSerial I2Cdev
Fork of MPU6050 by
Revision 10:d0c43cee874b, committed 2017-06-15
- Comitter:
- sem40590
- Date:
- Thu Jun 15 17:19:14 2017 +0000
- Parent:
- 9:338c5b334fa6
- Commit message:
- 1
Changed in this revision
I2Cdev.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 |
--- a/I2Cdev.lib Thu Jun 15 15:10:25 2017 +0000 +++ b/I2Cdev.lib Thu Jun 15 17:19:14 2017 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/syundo0730/code/I2Cdev/#bb5ba74750af +https://developer.mbed.org/users/sem40590/code/I2Cdev/#bb5ba74750af
--- a/main.cpp Thu Jun 15 15:10:25 2017 +0000 +++ b/main.cpp Thu Jun 15 17:19:14 2017 +0000 @@ -1,50 +1,3 @@ - -// I2C device class (I2Cdev) demonstration Arduino sketch for MPU6050 class using DMP (MotionApps v2.0) -// 6/21/2012 by Jeff Rowberg <jeff@rowberg.net> -// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib -// -// Changelog: -// 2013-05-08 - added seamless Fastwire support -// - added note about gyro calibration -// 2012-06-21 - added note about Arduino 1.0.1 + Leonardo compatibility error -// 2012-06-20 - improved FIFO overflow handling and simplified read process -// 2012-06-19 - completely rearranged DMP initialization code and simplification -// 2012-06-13 - pull gyro and accel data from FIFO packet instead of reading directly -// 2012-06-09 - fix broken FIFO read sequence and change interrupt detection to RISING -// 2012-06-05 - add gravity-compensated initial reference frame acceleration output -// - add 3D math helper file to DMP6 example sketch -// - add Euler output and Yaw/Pitch/Roll output formats -// 2012-06-04 - remove accel offset clearing for better results (thanks Sungon Lee) -// 2012-06-01 - fixed gyro sensitivity to be 2000 deg/sec instead of 250 -// 2012-05-30 - basic DMP initialization working - -/* ============================================ -I2Cdev device library code is placed under the MIT license -Copyright (c) 2012 Jeff Rowberg - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -=============================================== -*/ - -// I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files -// for both classes must be in the include path of your project -#include "I2Cdev.h" #include "mbed.h" #include <math.h> DigitalOut leds[] = {(LED1), (LED2),(LED3),(LED4)}; @@ -55,70 +8,13 @@ //#include "MPU6050.h" // not necessary if using MotionApps include file - -// class default I2C address is 0x68 -// specific I2C addresses may be passed as a parameter here -// AD0 low = 0x68 (default for SparkFun breakout and InvenSense evaluation board) -// AD0 high = 0x69 MPU6050 mpu; -//MPU6050 mpu(0x69); // <-- use for AD0 high - -/* ========================================================================= -NOTE: In addition to connection 3.3v, GND, SDA, and SCL, this sketch -depends on the MPU-6050's INT pin being connected to the Arduino's -external interrupt #0 pin. On the Arduino Uno and Mega 2560, this is -digital I/O pin 2. -* ========================================================================= */ - -/* ========================================================================= -NOTE: Arduino v1.0.1 with the Leonardo board generates a compile error -when using Serial.write(buf, len). The Teapot output uses this method. -The solution requires a modification to the Arduino USBAPI.h file, which -is fortunately simple, but annoying. This will be fixed in the next IDE -release. For more info, see these links: - -http://arduino.cc/forum/index.php/topic,109987.0.html -http://code.google.com/p/arduino/issues/detail?id=958 -* ========================================================================= */ - - + + #ifndef M_PI #define M_PI 3.1415 #endif - -// uncomment "OUTPUT_READABLE_QUATERNION" if you want to see the actual -// quaternion components in a [w, x, y, z] format (not best for parsing -// on a remote host such as Processing or something though) -//#define OUTPUT_READABLE_QUATERNION - -// uncomment "OUTPUT_READABLE_EULER" if you want to see Euler angles -// (in degrees) calculated from the quaternions coming from the FIFO. -// Note that Euler angles suffer from gimbal lock (for more info, see -// http://en.wikipedia.org/wiki/Gimbal_lock) -//#define OUTPUT_READABLE_EULER - -// uncomment "OUTPUT_READABLE_YAWPITCHROLL" if you want to see the yaw/ -// pitch/roll angles (in degrees) calculated from the quaternions coming -// from the FIFO. Note this also requires gravity vector calculations. -// Also note that yaw/pitch/roll angles suffer from gimbal lock (for -// more info, see: http://en.wikipedia.org/wiki/Gimbal_lock) -//#define OUTPUT_READABLE_YAWPITCHROLL - -// uncomment "OUTPUT_READABLE_REALACCEL" if you want to see acceleration -// components with gravity removed. This acceleration reference frame is -// not compensated for orientation, so +X is always +X according to the -// sensor, just without the effects of gravity. If you want acceleration -// compensated for orientation, us OUTPUT_READABLE_WORLDACCEL instead. -//#define OUTPUT_READABLE_REALACCEL - -// uncomment "OUTPUT_READABLE_WORLDACCEL" if you want to see acceleration -// components with gravity removed and adjusted for the world frame of -// reference (yaw is relative to initial orientation, since no magnetometer -// is present in this case). Could be quite handy in some cases. -//#define OUTPUT_READABLE_WORLDACCEL - -// uncomment "OUTPUT_TEAPOT" if you want output that matches the -// format used for the InvenSense teapot demo + #define OUTPUT_TEAPOT @@ -161,11 +57,8 @@ int main() { - //Pin Defines for I2C Bus #define D_SDA D14 #define D_SCL D15 -//#define D_SDA p28 -//#define D_SCL p27 I2C i2c(D_SDA, D_SCL); @@ -175,21 +68,16 @@ DigitalOut myled3(LED3); DigitalOut heartbeatLED(LED4); -// initialize serial communication -// (115200 chosen because it is required for Teapot Demo output, but it's -// really up to you depending on your project) -//Host PC Baudrate (Virtual Com Port on USB) #define D_BAUDRATE 115200 -// Host PC Communication channels + Serial pc(USBTX, USBRX); // tx, rx pc.baud(D_BAUDRATE); - // initialize device + pc.printf("Initializing I2C devices...\n"); mpu.initialize(); - // verify connection pc.printf("Testing device connections...\n"); bool mpu6050TestResult = mpu.testConnection(); @@ -254,22 +142,8 @@ if (!dmpReady) continue; myled2=0; - // wait for MPU interrupt or extra packet(s) available -// while (!mpuInterrupt && fifoCount < packetSize) { -// while (!mpuIntStatus && fifoCount < packetSize) { - // other program behavior stuff here - // . - // . - // . - // if you are really paranoid you can frequently test in between other - // stuff to see if mpuInterrupt is true, and if so, "break;" from the - // while() loop to immediately process the MPU data - // . - // . - // . -// fifoCount= mpu.getFIFOCount(); -// mpuIntStatus = mpu.getIntStatus(); + } wait_us(500); @@ -389,4 +263,4 @@ myled1 = blinkState; } } -} \ No newline at end of file +} \ No newline at end of file