#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <MPU6050.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
// Khởi tạo các đối tượng OLED
Adafruit_SSD1306 display1(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1, OLED_RESET);
Adafruit_SSD1306 display2(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1, OLED_RESET);
MPU6050 mpu;
void setup() {
Serial.begin(115200);
// Khởi động màn hình OLED
// Khởi tạo màn hình OLED 1
if(!display1.begin(SSD1306_SWITCHCAPVCC, 0X3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
// Khởi tạo màn hình OLED 2
if(!display2.begin(SSD1306_SWITCHCAPVCC, 0X3D)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display1.clearDisplay();
display2.clearDisplay();
display1.display();
display2.display();
// Khởi động cảm biến MPU6050
Wire.begin();
mpu.initialize();
}
void loop() {
// Đọc dữ liệu từ MPU6050
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
// Hiển thị dữ liệu trên màn hình OLED 1
display1.setCursor(0, 0);
display1.setTextSize(1);
display1.setTextColor(WHITE);
display1.print("Accel X: "); display1.println(ax);
display1.print("Accel Y: "); display1.println(ay);
display1.print("Accel Z: "); display1.println(az);
display1.display();
// Hiển thị dữ liệu trên màn hình OLED 2
display2.setCursor(0, 0);
display2.setTextSize(1);
display2.setTextColor(WHITE);
display2.print("Accel X: "); display2.println(ax);
display2.print("Accel Y: "); display2.println(ay);
display2.print("Accel Z: "); display2.println(az);
display2.display();
delay(500); // Thời gian trễ giữa các lần đọc
}