Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "I2Cdev.h"
- #include "MPU6050.h"
- #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
- #include "Wire.h"
- #endif
- MPU6050 accelgyro;
- int16_t ax, ay, az;
- int16_t gx, gy, gz;
- #define leftLED 2
- #define rightLED 6
- #define frontLED 9
- #define backLED 5
- #define OUTPUT_READABLE_ACCELGYRO
- #define LED_PIN 13
- bool blinkState = false;
- void setup() {
- pinMode(leftLED, OUTPUT);
- pinMode(rightLED, OUTPUT);
- pinMode(frontLED, OUTPUT);
- pinMode(backLED, OUTPUT);
- digitalWrite(leftLED, 0);
- digitalWrite(rightLED, 0);
- digitalWrite(backLED, 0);
- digitalWrite(frontLED, 0);
- // join I2C bus (I2Cdev library doesn't do this automatically)
- #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
- Wire.begin();
- #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
- Fastwire::setup(400, true);
- #endif
- // initialize serial communication
- // (38400 chosen because it works as well at 8MHz as it does at 16MHz, but
- // it's really up to you depending on your project)
- Serial.begin(38400);
- // initialize device
- Serial.println("Initializing I2C devices...");
- accelgyro.initialize();
- // verify connection
- Serial.println("Testing device connections...");
- Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
- // configure Arduino LED pin for output
- pinMode(LED_PIN, OUTPUT);
- }
- void loop() {
- // read raw accel/gyro measurements from device
- accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
- #ifdef OUTPUT_READABLE_ACCELGYRO
- // display tab-separated accel/gyro x/y/z values
- Serial.print("a/g:\t");
- Serial.print(ax); Serial.print("\t");
- Serial.print(ay); Serial.print("\t");
- Serial.println(az); Serial.print("\t");
- #endif
- #ifdef OUTPUT_BINARY_ACCELGYRO
- Serial.write((uint8_t)(ax >> 8)); Serial.write((uint8_t)(ax & 0xFF));
- Serial.write((uint8_t)(ay >> 8)); Serial.write((uint8_t)(ay & 0xFF));
- Serial.write((uint8_t)(az >> 8)); Serial.write((uint8_t)(az & 0xFF));
- #endif
- // blink LED to indicate activity
- blinkState = !blinkState;
- digitalWrite(LED_PIN, blinkState);
- if (ax < 700 && ay < -1000) {
- digitalWrite(leftLED, 1);
- digitalWrite(rightLED, 0);
- digitalWrite(frontLED, 0);
- digitalWrite(backLED, 0);
- }
- else if (ax < 700 && ay > 1000) {
- digitalWrite(leftLED, 0);
- digitalWrite(rightLED, 1);
- digitalWrite(frontLED, 0);
- digitalWrite(backLED, 0);
- }
- else if (ax > 1000 && ay < 700) {
- digitalWrite(leftLED, 0);
- digitalWrite(rightLED, 0);
- digitalWrite(frontLED, 1);
- digitalWrite(backLED, 0);
- }
- else if (ax < -1000 && ay < 700) {
- digitalWrite(leftLED, 0);
- digitalWrite(rightLED, 0);
- digitalWrite(frontLED, 0);
- digitalWrite(backLED, 1);
- }
- else {
- digitalWrite(leftLED, 0);
- digitalWrite(rightLED, 0);
- digitalWrite(frontLED, 0);
- digitalWrite(backLED, 0);
- }
- delay(100);
- }
Advertisement
Add Comment
Please, Sign In to add comment