M5StickCが回転したら画面も回転するようにするやつ

1 min read読了の目安(約800字

適当に放置するタイプだと回転してるときに自動回転させたい時があった。
M5.IMU.getAhrsDataM5.Lcd.setRotationで可能。

// 横
void display_rotation_horizontal()
{
  float pitch, roll, yaw;
  M5.IMU.getAhrsData(&pitch, &roll, &yaw);
  int rotation = (pitch < 0) ? 1 : 3;

  M5.Lcd.setRotation(rotation);
}

// 縦
void display_rotation_vertical()
{
  float pitch, roll, yaw;
  M5.IMU.getAhrsData(&pitch, &roll, &yaw);
  int rotation = (roll < 0) ? 2 : 4;

  M5.Lcd.setRotation(rotation);
}
全対応版も一応作ったものの、若干buggyかった
int detect_rotation()
{
  float pitch, roll, yaw;
  M5.IMU.getAhrsData(&pitch, &roll, &yaw);
  int rotation = (abs(pitch) > abs(roll)) ? (pitch < 0) ? 1 : 3
                                  : (roll < 0) ? 2 : 4;
  M5.Lcd.setRotation(rotation);
}

参考