极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21003|回复: 10

关于新旧ADXL345的问题。。。。

[复制链接]
发表于 2015-9-9 10:04:45 | 显示全部楼层 |阅读模式
百度了很久了,还是没有找到原因
用的是arduino uno驱动
用AB表示两款ADXL345

左边为A款,右边为B款。
代码如下

#include <Wire.h>  //调用arduino自带的I2C库

#define Register_ID 0
#define Register_2D 0x2D
#define Register_X0 0x32
#define Register_X1 0x33
#define Register_Y0 0x34
#define Register_Y1 0x35
#define Register_Z0 0x36
#define Register_Z1 0x37


unsigned char showx[]="X=";
unsigned char showy[]="Y=";
unsigned char showz[]="Z=";


int ADXAddress = 0xA7>>1;  //转换为7位地址
int reading = 0;
int val = 0;
int X0,X1,X_out;
int Y0,Y1,Y_out;
int Z1,Z0,Z_out;
double Xg,Yg,Zg;

void setup()
{
Serial.begin(9600);
delay(100);
Wire.beginTransmission(ADXAddress);
Wire.write(Register_2D);
Wire.write(8); //measuring enable
Wire.endTransmission(); // stop transmitting
}

void loop()
{
  Wire.beginTransmission(ADXAddress);
  Wire.write(Register_X0);
  Wire.write(Register_X1);
  Wire.endTransmission();
  Wire.requestFrom(ADXAddress,2);
  if(Wire.available()<=2);
  {
    X0 = Wire.read();
    X1 = Wire.read();
    X1 = X1<<8;
    X_out = X0+X1;
  }

  Wire.beginTransmission(ADXAddress);
  Wire.write(Register_Y0);
  Wire.write(Register_Y1);
  Wire.endTransmission();
  Wire.requestFrom(ADXAddress,2);
  if(Wire.available()<=2);
  {
    Y0 = Wire.read();
    Y1 = Wire.read();
    Y1 = Y1<<8;
    Y_out = Y0+Y1;
  }

  Wire.beginTransmission(ADXAddress);
  Wire.write(Register_Z0);
  Wire.write(Register_Z1);
  Wire.endTransmission();
  Wire.requestFrom(ADXAddress,2);
  if(Wire.available()<=2);
  {
    Z0 = Wire.read();
    Z1 = Wire.read();
    Z1 = Z1<<8;
    Z_out = Z0+Z1;
  }

  Xg = X_out/256.00;//把输出结果转换为重力加速度g,精确到小数点后2位。
  Yg = Y_out/256.00;
  Zg = Z_out/256.00;
  
  Serial.print("X=");
  Serial.print(Xg);
  Serial.print("   ");
  Serial.print("Y=");
  Serial.print(Yg);
  Serial.print("   ");
  Serial.print("Z=");
  Serial.println(Zg);
  delay(200);
}

A款可以正常驱动,串口监视器有SYZ的数值输出。B款驱动不了,串口监视器没有任何显示,空白一片。
参考了商家的文档:地址是一样的(不排除商家也不懂放进了A款的文档)
B已经换过一个了,还是一样,基本排除元器件坏了的问题。

各位大神帮忙看看啥问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-9-9 10:14:23 | 显示全部楼层
网上有测IIC地址的小程序,重新测下iic地址,淘宝上给的地址不要相信。
回复 支持 反对

使用道具 举报

发表于 2015-9-9 10:16:15 | 显示全部楼层
例如 http://www.geek-workshop.com/thread-16034-1-2.html  3楼,就有人提供一个测试iic地址的工具
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-9 10:32:53 | 显示全部楼层
1415926 发表于 2015-9-9 10:16
例如 http://www.geek-workshop.com/thread-16034-1-2.html  3楼,就有人提供一个测试iic地址的工具

感谢提供的工具,已经扫出来确实地址不对,改成A4后,数据是出来了,但是都是1.00  1.00  1.00没有任何变化
回复 支持 反对

使用道具 举报

发表于 2015-9-9 14:41:35 | 显示全部楼层
本帖最后由 1415926 于 2015-9-9 17:02 编辑
中贝斯特 发表于 2015-9-9 10:32
感谢提供的工具,已经扫出来确实地址不对,改成A4后,数据是出来了,但是都是1.00  1.00  1.00没有任何变 ...


查下B版的手册吧,或许寄存器地址、读写方式什么的有差异了...
回复 支持 反对

使用道具 举报

发表于 2015-9-15 15:30:29 | 显示全部楼层
这两款 那个是新 那个是旧的 最近我也烦恼着这块芯片的问题,不知买那个款好
回复 支持 反对

使用道具 举报

发表于 2015-9-20 00:17:42 | 显示全部楼层
有人回复吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-3 21:13:54 | 显示全部楼层
好像没有。。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2016-3-4 09:04:27 | 显示全部楼层
只要芯片是ADXL345就没有区别
回复 支持 反对

使用道具 举报

发表于 2016-4-23 16:17:49 | 显示全部楼层
奇怪 为什么 我的 Z轴 永远都是2 的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2016-9-25 20:50:28 | 显示全部楼层
布列松 发表于 2016-4-23 16:17
奇怪 为什么 我的 Z轴 永远都是2 的

您的问题解决了吗?我的也是,测出来的数据z轴永远是2不变。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 22:25 , Processed in 0.061954 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表