ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
## **读取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)