/**
 * MMC5603 三轴磁力计测试 (DFRobot SKU:0805) —— 串口版
 * I2C: SDA=GPIO21, SCL=GPIO22(普通ESP32开发板)  地址0x30
 * 串口 115200, 读取 X/Y/Z 磁场(uT) 与芯片温度(°C)
 * 注: 2.8寸CYD黄屏版请用 01_程序代码_2.8屏合成版, 那块板SDA必须用IO27
 */
#include <Wire.h>
#include <Adafruit_MMC56x3.h>

Adafruit_MMC5603 mmc = Adafruit_MMC5603(12345);

void setup(void) {
  Serial.begin(115200);
  while (!Serial) delay(10);

  Serial.println("MMC5603 磁力计测试 (SKU:0805)");
  if (!mmc.begin(MMC56X3_DEFAULT_ADDRESS, &Wire)) {
    Serial.println("未检测到 MMC5603, 检查接线 (SDA=21, SCL=22)");
    while (1) delay(10);
  }
  Serial.println("MMC5603 已就绪!");
  mmc.setDataRate(100);        // 100Hz输出, 演示足够
  mmc.setContinuousMode(false);
}

void loop(void) {
  sensors_event_t mag_event;
  mmc.getEvent(&mag_event);
  float temp = mmc.readTemperature();

  Serial.print("X: "); Serial.print(mag_event.magnetic.x, 2); Serial.print(" uT");
  Serial.print("  Y: "); Serial.print(mag_event.magnetic.y, 2); Serial.print(" uT");
  Serial.print("  Z: "); Serial.print(mag_event.magnetic.z, 2); Serial.print(" uT");
  Serial.print("  T: "); Serial.print(temp, 1); Serial.println(" C");

  delay(200);
}
