🌀
M5StickCが回転したら画面も回転するようにするやつ
適当に放置するタイプだと回転してるときに自動回転させたい時があった。
M5.IMU.getAhrsData
とM5.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