摘要:本文介绍如何使用四方向传感器RPI-1031模块
四方向传感器是一种倾斜传感器用来检测一个物体水平倾斜情况,也就是能检测到一个水平放置的物体向前、向后、向左还是向右倾斜。在早期的手机中都是有这个功能模块的,后来逐渐被功能更强大的加速度传感器所替代。在后边实现小车遥控手柄的时候,可以把这个传感器安装进去,这样,就可以通过遥控器的向前、向后、向左和向右来控制小车向前、后、左、右运动了。
但也需要提醒的是,这个模块的功能非常的有限,只能输出4个倾斜的方向,也就是只有4个输出状态,并不能知道倾斜多大角度。而且,在任意位置,都会有倾斜状态输出值。虽然这个传感器在现在已经用得不多了,但是其设计还是非常巧妙,在这里重点讲解一下其工作原理,希望能给大家一些启发。
这个倾斜传感器的实现非常巧妙,它是实际上是一个光学传感器。在其内部有一个正方形的深槽,槽内安装了一个发光二极管和两个光敏接收三极管,另外还有一个可以自由移动的遮光小球。由于方形槽处于不同的状态时,小球总会处于槽内的最低位置。因此,通过光敏三极管的状态就可以得到小球的位置,从而知道该传感器向哪个方向倾斜。传感器内部结果如下图所示:
通过判断两个光敏三极管的导通与关闭状态,就能够知道小球所处的位置,从而得到传感器像哪边倾斜。
当两个光敏三极管全部导通状态时,则说明遮光小球为遮挡发光二极管和任何一个光敏三极管,可以断定其在正前方,倾斜传感器处于向前倾斜的状态,如下图所示:
当两个三极管只有一个导通,而另一个处于关断状态时,则说明小球遮住了一个光敏三极管,在关断三极管的一边,那么整个传感器是向这边倾斜的,如下图所示:
当两个光敏三极管都是截至状态时,说明遮光小球挡住了光源,处于发光二极管的这一边,那么倾斜传感器是向后倾斜的。如下图所示:
好了,这就是这个倾斜传感器的工作原理。下面来看一下倾斜传感器模块的样子,如下图所示:
RPI-1031模块采用5V供电,S1和S2为模块的两个数字量输出引脚,这两个引脚不同的高低电平的组合代表了模块儿的不同倾斜方向。下面来看一下测试程序。
#define S1 33 #define S2 32 void setup() { // put your setup code here, to run once: Serial.begin(115200); pinMode(S1, INPUT); pinMode(S2, INPUT); } void loop() { // put your main code here, to run repeatedly: int s1 = digitalRead(S1); int s2 = digitalRead(S2); Serial.print(s1); Serial.print(" "); Serial.print(s2); Serial.print(" "); if (s1 == HIGH && s2 == HIGH) { Serial.println("向后!"); } else if (s1 == LOW && s2 == LOW) { Serial.println("向前!"); } else if (s1 == LOW && S2 == HIGH) { Serial.println("向左!"); } else { Serial.println("向右!"); } delay(100); } |
好了,这个模块就简单介绍到这里了,接下来会介绍功能更强大的姿态传感器——MPU6050。