## **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)
- 说明
- 系统示例文件目录结构及说明
- 01.Basics
- AnalogReadSerial
- BareMinimum
- Blink
- DigitalReadSerial
- Fade
- ReadAnalogVoltage
- 02.Digital
- BlinkWithoutDelay
- Button
- Debounce
- DigitalInputPullup
- StateChangeDetection
- toneKeyboard
- toneMelody
- toneMultiple
- tonePitchFollower
- 03.Analog
- AnalogInOutSerial
- AnalogInput
- AnalogWriteMega
- Calibration
- Fading
- Smoothing
- 04.Communication
- ASCIITable
- Dimmer
- Graph
- Midi
- MultiSerial
- PhysicalPixel
- ReadASCIIString
- SerialCallResponse
- SerialCallResponseASCII
- SerialEvent
- SerialPassthrough
- VirtualColorMixer
- 05.Control
- Arrays
- ForLoopIteration
- IfStatementConditional
- switchCase
- switchCase2
- WhileStatementConditional
- 06.Sensors
- ADXL3xx
- Knock
- Memsic2125
- Ping
- 07.Display
- barGraph
- RowColumnScanning
- 08.Strings
- CharacterAnalysis
- StringAdditionOperator
- StringAppendOperator
- StringCaseChanges
- StringCharacters
- StringComparisonOperators
- StringConstructors
- StringIndexOf
- StringLength
- StringLengthTrim
- StringReplace
- StringStartsWithEndsWith
- StringSubstring
- StringToInt
- 09.USB
- Keyboard
- KeyboardLogout
- KeyboardMessage
- KeyboardReprogram
- KeyboardSerial
- KeyboardAndMouseControl
- Mouse
- ButtonMouseControl
- JoystickMouseControl
- 10.StarterKit_BasicKit (与特定硬件相关,暂无)
- p02_SpaceshipInterface
- p03_LoveOMeter
- p04_ColorMixingLamp
- p05_ServoMoodIndicator
- p06_LightTheremin
- p07_Keyboard
- p08_DigitalHourglass
- p09_MotorizedPinwheel
- p10_Zoetrope
- p11_CrystalBall
- p12_KnockLock
- p13_TouchSensorLamp
- p14_TweakTheArduinoLogo
- p15_HackingButtons
- 11.ArduinoISP(暂无)
- ArduinoISP