safwan092

Gyro-Arduino-Uno-Final-code

Apr 15th, 2018
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.92 KB | None | 0 0
  1. #include "I2Cdev.h"
  2. #include "MPU6050.h"
  3.  
  4. #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
  5. #include "Wire.h"
  6. #endif
  7.  
  8. MPU6050 accelgyro;
  9.  
  10.  
  11. int16_t ax, ay, az;
  12. int16_t gx, gy, gz;
  13.  
  14.  
  15. #define leftLED 2
  16. #define rightLED 6
  17. #define frontLED 9
  18. #define backLED 5
  19.  
  20. #define OUTPUT_READABLE_ACCELGYRO
  21.  
  22.  
  23. #define LED_PIN 13
  24. bool blinkState = false;
  25.  
  26. void setup() {
  27.  
  28.   pinMode(leftLED, OUTPUT);
  29.   pinMode(rightLED, OUTPUT);
  30.   pinMode(frontLED, OUTPUT);
  31.   pinMode(backLED, OUTPUT);
  32.  
  33.   digitalWrite(leftLED, 0);
  34.   digitalWrite(rightLED, 0);
  35.   digitalWrite(backLED, 0);
  36.   digitalWrite(frontLED, 0);
  37.  
  38.   // join I2C bus (I2Cdev library doesn't do this automatically)
  39. #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
  40.   Wire.begin();
  41. #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
  42.   Fastwire::setup(400, true);
  43. #endif
  44.  
  45.   // initialize serial communication
  46.   // (38400 chosen because it works as well at 8MHz as it does at 16MHz, but
  47.   // it's really up to you depending on your project)
  48.   Serial.begin(38400);
  49.  
  50.   // initialize device
  51.   Serial.println("Initializing I2C devices...");
  52.   accelgyro.initialize();
  53.  
  54.   // verify connection
  55.   Serial.println("Testing device connections...");
  56.   Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
  57.  
  58.   // configure Arduino LED pin for output
  59.   pinMode(LED_PIN, OUTPUT);
  60. }
  61.  
  62. void loop() {
  63.   // read raw accel/gyro measurements from device
  64.   accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
  65.  
  66. #ifdef OUTPUT_READABLE_ACCELGYRO
  67.   // display tab-separated accel/gyro x/y/z values
  68.   Serial.print("a/g:\t");
  69.   Serial.print(ax); Serial.print("\t");
  70.   Serial.print(ay); Serial.print("\t");
  71.   Serial.println(az); Serial.print("\t");
  72. #endif
  73.  
  74. #ifdef OUTPUT_BINARY_ACCELGYRO
  75.   Serial.write((uint8_t)(ax >> 8)); Serial.write((uint8_t)(ax & 0xFF));
  76.   Serial.write((uint8_t)(ay >> 8)); Serial.write((uint8_t)(ay & 0xFF));
  77.   Serial.write((uint8_t)(az >> 8)); Serial.write((uint8_t)(az & 0xFF));
  78. #endif
  79.  
  80.   // blink LED to indicate activity
  81.   blinkState = !blinkState;
  82.   digitalWrite(LED_PIN, blinkState);
  83.   if (ax < 700 && ay < -1000) {
  84.     digitalWrite(leftLED, 1);
  85.     digitalWrite(rightLED, 0);
  86.     digitalWrite(frontLED, 0);
  87.     digitalWrite(backLED, 0);
  88.   }
  89.   else if (ax < 700 && ay > 1000) {
  90.     digitalWrite(leftLED, 0);
  91.     digitalWrite(rightLED, 1);
  92.     digitalWrite(frontLED, 0);
  93.     digitalWrite(backLED, 0);
  94.   }
  95.  
  96.   else if (ax > 1000 && ay < 700) {
  97.     digitalWrite(leftLED, 0);
  98.     digitalWrite(rightLED, 0);
  99.     digitalWrite(frontLED, 1);
  100.     digitalWrite(backLED, 0);
  101.   }
  102.  
  103.   else if (ax < -1000 && ay  < 700) {
  104.     digitalWrite(leftLED, 0);
  105.     digitalWrite(rightLED, 0);
  106.     digitalWrite(frontLED, 0);
  107.     digitalWrite(backLED, 1);
  108.   }
  109.   else {
  110.     digitalWrite(leftLED, 0);
  111.     digitalWrite(rightLED, 0);
  112.     digitalWrite(frontLED, 0);
  113.     digitalWrite(backLED, 0);
  114.   }
  115.  
  116.   delay(100);
  117. }
Advertisement
Add Comment
Please, Sign In to add comment