## **Memsic2125加速度計**
> Memsic2125是一款兩軸加速度計,它能夠測量兩個方向正負2g的加速度(g代表重力加速度)。它的引腳設計很簡單:只有兩個數據輸出引腳,一個為X軸,一個為Y軸。它的數據輸出引腳會根據加速度的大小輸出不同的**脈寬**(不知道脈寬是什么請看[這篇文章](http://blog.csdn.net/amagamag/article/details/51460903))。通過**pulseln()**可以對微妙級別的脈沖寬度進行測量,從而通過計算獲取加速度數據。
### **所需硬件**
* Arduino板或Genuino板
* Memsic 2125加速度計
* 跳線
* 面包板
* 連接線
### **電路**

首先,用Memsic2125 上的小三角形來正確的將傳感器插在面包板上。分別將Memsic2125的**+V**和**GND**連接到**+5V**和**GND**。將2號數字引腳先接到**Xout**,將3號數字引腳先接到**Yout**。

你的Arduino或Genuino板必須接上電腦,以便在串口監視器看到結果。
### **原理圖**

### **代碼**
打開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