#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
Adafruit_MPU6050 mpu;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
for (int i = 2; i <= 6; i++) {
pinMode(i, OUTPUT);
}
delay(100);
mpu.setAccelerometerRange(MPU6050_RANGE_16_G);
mpu.setGyroRange(MPU6050_RANGE_250_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
delay(100);
Serial.begin(115200);
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
lcd.init();
lcd.backlight();
lcd.print("Temp:");
lcd.setCursor(0, 1);
lcd.print("--- C");
}
void loop() {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
if ((g.gyro.x == 0) && (g.gyro.y == 0)) {
digitalWrite(2, LOW); digitalWrite(3, LOW);
digitalWrite(4, LOW); digitalWrite(5, LOW);
} else if ((g.gyro.x > 0) && (g.gyro.y == 0)) {
digitalWrite(2, HIGH); digitalWrite(3, LOW);
digitalWrite(4, LOW); digitalWrite(5, LOW);
} else if ((g.gyro.x < 0) && (g.gyro.y == 0)) {
digitalWrite(4, HIGH); digitalWrite(2, LOW);
digitalWrite(3, LOW); digitalWrite(5, LOW);
} else if ((g.gyro.x == 0) && (g.gyro.y > 0)) {
digitalWrite(3, HIGH); digitalWrite(2, LOW);
digitalWrite(4, LOW); digitalWrite(5, LOW);
} else if ((g.gyro.x == 0) && (g.gyro.y < 0)) {
digitalWrite(5, HIGH); digitalWrite(2, LOW);
digitalWrite(3, LOW); digitalWrite(4, LOW);
} else if ((g.gyro.x > 0) && (g.gyro.y > 0)) {
digitalWrite(2, HIGH); digitalWrite(3, HIGH);
digitalWrite(4, LOW); digitalWrite(5, LOW);
} else if ((g.gyro.x < 0) && (g.gyro.y > 0)) {
digitalWrite(4, HIGH); digitalWrite(3, HIGH);
digitalWrite(2, LOW); digitalWrite(5, LOW);
} else if ((g.gyro.x < 0) && (g.gyro.y < 0)) {
digitalWrite(4, HIGH); digitalWrite(5, HIGH);
digitalWrite(2, LOW); digitalWrite(3, LOW);
} else if ((g.gyro.x > 0) && (g.gyro.y < 0)) {
digitalWrite(2, HIGH); digitalWrite(5, HIGH);
digitalWrite(3, LOW); digitalWrite(4, LOW);
}
lcd.setCursor(6, 0);
lcd.print(" ");
lcd.setCursor(6, 0);
lcd.print(temp.temperature);
lcd.setCursor(0, 1);
lcd.print("Chip Temp");
Serial.print("Temperature: ");
Serial.println(temp.temperature);
delay(500);
}