ardruino uno r3和ADXL345连接问题

linlepeng 2015-05-16 02:43:46
各位大神们,小弟最近在学习arduino 。 作ARduino uno r3 和ADXL45检测加速度实验,
以下是程序,但结果全显示-1,是怎么回事?望解答。。。。
#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
#include<Wire.h>
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()
{
Wire.begin();
Serial.begin(19200);
delay(100);
Wire.beginTransmission(ADXAddress);
Wire.write(Register_2D);
Wire.write(8);
Wire.endTransmission(ADXAddress);
}
void loop()
{
Wire.beginTransmission(ADXAddress);
Wire.write(Register_X0);
Wire.write(Register_X1);
Wire.endTransmission(ADXAddress);
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(ADXAddress);
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(ADXAddress);
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.0;
Yg=Y_out/256.0;
Zg=Z_out/256.0;
Serial.print("X=");
Serial.print(Xg);
Serial.print(" ");
Serial.print("Y=");
Serial.print(Yg);
Serial.print(" ");
Serial.print("Z=");
Serial.print(Zg);
Serial.println(" ");
delay(200);
}

...全文
256 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

488

社区成员

发帖
与我相关
我的任务
社区描述
硬件使用 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧