🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## **Memsic2125加速度计** > Memsic2125是一款两轴加速度计,它能够测量两个方向正负2g的加速度(g代表重力加速度)。它的引脚设计很简单:只有两个数据输出引脚,一个为X轴,一个为Y轴。它的数据输出引脚会根据加速度的大小输出不同的**脉宽**(不知道脉宽是什么请看[这篇文章](http://blog.csdn.net/amagamag/article/details/51460903))。通过**pulseln()**可以对微妙级别的脉冲宽度进行测量,从而通过计算获取加速度数据。 ### **所需硬件** * Arduino板或Genuino板 * Memsic 2125加速度计 * 跳线 * 面包板 * 连接线 ### **电路** ![图片来自官网](http://img.blog.csdn.net/20160627085451369) 首先,用Memsic2125 上的小三角形来正确的将传感器插在面包板上。分别将Memsic2125的**+V**和**GND**连接到**+5V**和**GND**。将2号数字引脚先接到**Xout**,将3号数字引脚先接到**Yout**。 ![图片来自官网](http://img.blog.csdn.net/20160627085543838) 你的Arduino或Genuino板必须接上电脑,以便在串口监视器看到结果。 ### **原理图** ![图片来自官网](http://img.blog.csdn.net/20160627085557406) ### **代码** 打开Arduino IDE的串口监视器以看到效果。 ~~~ /* Memsic2125 读取Memsic 2125两轴加速度计的脉宽,并且将它转换成为真正的加速度,然后输出到串口监视器。 电路搭建: * Xout 接到2号数字引脚 * Yout 接到3号数字引脚 * +V接到+5V * GND接到GND 代码公开 */ // 不可变常量: const int xPin = 2; // 加速度X轴输出 const int yPin = 3; // 加速度Y轴输出 void setup() { // 初始化串口连接: Serial.begin(9600); // 初始化加速度引脚为输出模式: pinMode(xPin, INPUT); pinMode(yPin, INPUT); } void loop() { // 存储脉宽的变量: int pulseX, pulseY; // 存储加速度的变量: int accelerationX, accelerationY; // 读取x\y上面的脉冲宽度: pulseX = pulseIn(xPin, HIGH); pulseY = pulseIn(yPin, HIGH); // 将脉宽转换成为加速度 // X与Y轴上的加速度将以(milli-g)千分之重力加速度来输出: // 按照这个单位地球的重力加速度为1000g,或者简称lg。 accelerationX = ((pulseX / 10) - 500) * 8; accelerationY = ((pulseY / 10) - 500) * 8; // 输出加速度数据 Serial.print(accelerationX); // 输出一个制表符: Serial.print("\t"); Serial.print(accelerationY); Serial.println(); delay(100); } ~~~ ### **相关资料** [pinMode()](https://www.arduino.cc/en/Reference/PinMode)  [pulseIn()](https://www.arduino.cc/en/Reference/PulseIn)  [serial.begin()](https://www.arduino.cc/en/Serial/Begin)  [serial.print()](https://www.arduino.cc/en/Serial/Print)  [原文链接](http://www.arduino.cc/en/Tutorial/Memsic2125)