🌀

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

2020/09/21に公開

適当に放置するタイプだと回転してるときに自動回転させたい時があった。
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);
}

参考

Discussion