#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_MPU6050.h>
//versao
// OLED display parameters
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// MPU6050 object
Adafruit_MPU6050 mpu;
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Initialize I2C communication
Wire.begin();
// Initialize OLED display
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
display.display();
delay(2000);
display.clearDisplay();
// Initialize MPU6050 sensor
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
// Set MPU6050 sensor range and filters
mpu.setAccelerometerRange(MPU6050_RANGE_2_G);
mpu.setGyroRange(MPU6050_RANGE_250_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
Serial.println("MPU6050 Found!");
delay(100);
}
void loop() {
// Get accelerometer data
sensors_event_t accel;
mpu.getAccelerometerSensor()->getEvent(&accel);
// Get gyro data
sensors_event_t gyro;
mpu.getGyroSensor()->getEvent(&gyro);
// Get temperature data
sensors_event_t temp;
mpu.getTemperatureSensor()->getEvent(&temp);
// Print data to serial monitor
Serial.print("Accelerometer - X: ");
Serial.print(accel.acceleration.x);
Serial.print(", Y: ");
Serial.print(accel.acceleration.y);
Serial.print(", Z: ");
Serial.println(accel.acceleration.z);
Serial.print("Gyroscope - X: ");
Serial.print(gyro.gyro.x);
Serial.print(", Y: ");
Serial.print(gyro.gyro.y);
Serial.print(", Z: ");
Serial.println(gyro.gyro.z);
Serial.print("Temperature: ");
Serial.print(temp.temperature);
Serial.println(" °C");
// Display data on OLED
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Sensor Data:");
display.print("Accel X: ");
display.println(accel.acceleration.x);
display.print("Accel Y: ");
display.println(accel.acceleration.y);
display.print("Accel Z: ");
display.println(accel.acceleration.z);
display.print("Gyro X: ");
display.println(gyro.gyro.x);
display.print("Gyro Y: ");
display.println(gyro.gyro.y);
display.print("Gyro Z: ");
display.println(gyro.gyro.z);
display.print("Temperature: ");
display.print(temp.temperature);
display.println(" °C");
display.display();
// Delay to avoid too frequent updates
delay(500);
}