#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
Serial.begin(9600);
Serial.println("Adafruit MPU6050 test!");
// Try to initialize!
if (!mpu.begin()) {
Serial.println("MPU6050 initialization failed!");
while (1);
}
}
void loop() {
// Get Distances
digitalWrite(2, LOW);
delayMicroseconds(2);
digitalWrite(2, HIGH);
delayMicroseconds(10);
digitalWrite(2, LOW);
unsigned long s1 = pulseIn(5, HIGH); // Front
float d1 = s1 * 0.034 / 2;
Serial.println(d1);
digitalWrite(3, LOW);
delayMicroseconds(2);
digitalWrite(3, HIGH);
delayMicroseconds(10);
digitalWrite(3, LOW);
unsigned long s2 = pulseIn(6, HIGH); // Left
float d2 = s2 * 0.034 / 2;
Serial.println(d2);
digitalWrite(4, LOW);
delayMicroseconds(2);
digitalWrite(4, HIGH);
delayMicroseconds(10);
digitalWrite(4, LOW);
unsigned long s3 = pulseIn(7, HIGH); // Right
float d3 = s3 * 0.034 / 2;
Serial.println(d3);
// Get Angles
sensors_event_t accel, gyro, temp;
mpu.getEvent(&accel, &gyro, &temp);
/* Print out the values */
Serial.print("Accel (m/s^2): X=");
Serial.print(accel.acceleration.x);
Serial.print(" Y=");
Serial.print(accel.acceleration.y);
Serial.print(" Z=");
Serial.println(accel.acceleration.z);
// Outputs
if (d1 <= 100) {
digitalWrite(11, HIGH);
} else {
digitalWrite(11, LOW);
}
if (d2 <= 100) {
digitalWrite(12, HIGH);
} else {
digitalWrite(12, LOW);
}
if (d3 <= 100) {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
delay(250); // Optional delay for stability
}