#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// สร้างออบเจกต์สำหรับหน้าจอ OLED
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// สร้างออบเจกต์สำหรับ MPU
Adafruit_MPU6050 mpu;
void setup() {
Serial.begin(115200);
// ตรวจสอบการเชื่อมจอ OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed"));
while (true) {
}
}
// ตรวจสอบการเชื่อมMPU6050
while (!mpu.begin(0x69)) {
Serial.println("MPU not connected");
delay(1000);
}
delay(500);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
}
sensors_event_t a; // ตัวแปรสำหรับเก็บข้อมูลจากเซ็นเซอร์
void loop() {
mpu.getAccelerometerSensor()->getEvent(&a); //อ่านค่าAccelerationจากMPU
// แปลงค่าเป็นหน่วย g
float accelerationX = a.acceleration.x / 9.8;
float accelerationY = a.acceleration.y / 9.8;
float accelerationZ = a.acceleration.z / 9.8;
display.clearDisplay();
display.setCursor(0, 0);
display.print("Acceleration:");
display.setCursor(0, 10);
// แสดงค่าAcceleration X
display.print("X: ");
display.print(accelerationX, 2); // ใส่2 คือให้แสดงทศนิยม แค่ 2ตำแหน่ง
display.print(" g");
// แสดงค่าAcceleration Y
display.setCursor(0, 20);
display.print("Y: ");
display.print(accelerationY, 2);
display.print(" g");
display.setCursor(0, 30);
// แสดงค่าAcceleration Z
display.print("Z: ");
display.print(accelerationZ, 2);
display.print(" g");
display.display();
}