使用Arduino确定“风景”和“肖像”方向

时间:2017-04-09 16:03:25

标签: mobile arduino orientation screen-orientation

移动设备如何确定它是横向还是纵向模式?

如果可以使用相同的传感器,是否可以在Arduino Board上复制相同的功能?

例如,下图所示的电路板为风景,如果旋转90度,则为人像

enter image description here

1 个答案:

答案 0 :(得分:0)

本文详细介绍了https://www.safaribooksonline.com/library/view/basic-sensors-in/9781449309480/ch04.html

相关的代码段在Objective-C中提供,但可以根据需要轻松翻译:

float x = -[acceleration x];
float y = [acceleration y];
float angle = atan2(y, x);

if(angle >= −2.25 && angle <= −0.75) {
   //OrientationPortrait
} else if(angle >= −0.75 && angle <= 0.75){
   //OrientationLandscapeRight
} else if(angle >= 0.75 && angle <= 2.25) {
   //OrientationPortraitUpsideDown
} else if(angle <= −2.25 || angle >= 2.25) {
   //OrientationLandscapeLeft];
}

解释:对于任何不等于零的实参x和y,atan2(y,x)是平面的正x轴与点之间的弧度角由指定的坐标给出。对于逆时针角度,角度为正,对于顺时针角度,角度为负。