## **读取ADXL3xx加速度计**
> 本例向你展示如何读取ADXL3xx(例如:ADXL320, ADXL321, ADXL322,DXL330)系列加速度计。并且通过Arduino IDE或其他串口数据接收器输出加速度数据。本例使用的板子是Sparkfun的**breakout**板。使用**adafruit accelerometer breakout板**也可以不过连线会有所不同。
>
> 译者注:可以用**KXR94-2283**来代替**ADXL3xx**系列,不过需要注意连线
ADXL3xx系列加速度计将角度转化为0-5v的电压。如果要读取数据,只需要使用analogRead()函数。
### **所需硬件**
* Arduino或Genuino板子
* ADXL3xx系列加速度计
* 连接线
### **电路**
加速度计只会消耗很少的电流,因此可以直接用输出引脚驱动。
![图片来自官网](http://img.blog.csdn.net/20160610205445973)
* * *
如果你用了普通Arduino板+加速度计
| 引脚 | 模拟引脚 |
| --- | :-: |
| 自测引脚 | 孔雀 |
| Z轴引脚 | A1 |
| Y轴引脚 | A2 |
| X轴引脚 | A3 |
| GND | GND |
| VDD | 5V |
请特别注意,有些加速度计最大支持3.3V,如果用5V会损坏加速度计。请参阅加速度计的数据手册来确定合适电压范围。
* * *
如果你使用里的教程的板子,为了让breakout能直接连接到Arduino你需要使用3个模拟引脚来当作数字IO引脚(在基础部分中的数字有提到)来提供电源和GND。然后用其他三个模拟引脚读取加速度计的模拟信号 。按照下列方式连接引脚:
| 引脚 | 模拟引脚 |
| --- | :-: |
| 自测引脚 | A0 |
| Z轴引脚 | A1 |
| Y轴引脚 | A2 |
| X轴引脚 | A3 |
| GND | A4 |
| VDD | A5 |
### **原理图**
![[图片来自官网](http://img.blog.csdn.net/20160610205507224)
### **代码**
加速度计引脚在代码开头以常量方式定义,本代码使用A4(19)和A5(18)作为电源和GND。如果你没有用教程用的板子,请将19改为14,18改为15。
~~~
const int groundpin = 18;
const int powerpin = 19;
~~~
设置A5(19)为高电平,A4(18)为低电平。让加速度计工作起来。
~~~
pinMode(groundpin, OUTPUT);
pinMode(powerpin, OUTPUT);
digitalWrite(groundpin, LOW);
digitalWrite(powerpin, HIGH);
~~~
Sparkfun的breakout板可以直接连接到Arduino或Genuino板上。但有些板可能需要链接到标准5V或3.3V以及GND接口,你需要将setup上方的代码改为注释中的内容。
~~~
/*
读取ADXL3xx加速度计
读取ADXL3xx加速度计并且将数据发送到电脑。本例使用Sparkfun的breakout板子最好,下面是购买链接:
http://www.sparkfun.com/commerce/categories.php?c=80
代码公开
*/
// 常量引脚定义:
const int groundpin = 18; // A4--GND
const int powerpin = 19; // A5--+5V
const int xpin = A3; // x轴
const int ypin = A2; // y轴
const int zpin = A1; // z轴
void setup() {
// 初始化串口连接:
Serial.begin(9600);
// 下列代码这样设置是为了将breakout板直接连接到Arduino上。如果你没有用breakout板子,直接将传感器连上了+5v和GND请去掉下面四行代码
pinMode(groundpin, OUTPUT);
pinMode(powerpin, OUTPUT);
digitalWrite(groundpin, LOW);
digitalWrite(powerpin, HIGH);
}
void loop() {
// 输出传感器值:
Serial.print(analogRead(xpin));
// 输出一个table制表符:
Serial.print("\t");
Serial.print(analogRead(ypin));
// 输出一个table制表符:
Serial.print("\t");
Serial.print(analogRead(zpin));
Serial.println();
// 延迟100毫秒
delay(100);
}
~~~
### **数据**
下列输出的是y轴的数据。但是你的数据可能由于传感器型号的不同而与下列数据有所差异。
| 角度 | 加速度 |
| --- | :-: |
| -90 | 662 |
| -80 | 660 |
| -70 | 654 |
| -60 | 642 |
| -50 | 628 |
| -40 | 610 |
| -30 | 589 |
| -20 | 563 |
| -10 | 537 |
| 0 | 510 |
| 角度 | 加速度 |
| --- | :-: |
| 0 | 510 |
| 10 | 485 |
| 20 | 455 |
| 30 | 433 |
| 40 | 408 |
| 50 | 390 |
| 60 | 374 |
| 70 | 363 |
| 80 | 357 |
| 90 | 355 |
### **相关资料**
[pinMode()](https://www.arduino.cc/en/Reference/PinMode)
[digitalWrite()](https://www.arduino.cc/en/Reference/DigitalWrite)
[analogRead()](https://www.arduino.cc/en/Reference/AnalogRead)
[serial.begin()](https://www.arduino.cc/en/Serial/Begin)
[serial.print()](https://www.arduino.cc/en/Serial/Print)
[原文链接](http://www.arduino.cc/en/Tutorial/ADXL3xx)
- 说明
- 系统示例文件目录结构及说明
- 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