弘老师,请教一下,我前两天买的一个ADXL345,板子上面只有三个电容和一个ADXL345。引脚跟你的电路图一模一样。手头只有一个LCD按键(LCD1602 KEYPAD V2.0模块)的板,电路板是买来的时候设置好的了,做不了弘老师的液晶部分,所以自己改了一下程序希望通过串口显示,代码如下:- #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
- 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);
- Wire.begin(); //初始化I2C
- delay(100);
- Wire.beginTransmission(ADXAddress);
- Wire.send(Register_2D);
- Wire.send(8);
- Wire.endTransmission();
- }
- void loop()
- {
- Wire.beginTransmission(ADXAddress);
- Wire.send(Register_X0);
- Wire.send(Register_X1);
- Wire.endTransmission();
- Wire.requestFrom(ADXAddress,2);
- if(Wire.available()<=2);
- {
- X0 = Wire.receive();
- X1 = Wire.receive();
- X1 = X1<<8;
- X_out = X0+X1;
- }
- Wire.beginTransmission(ADXAddress);
- Wire.send(Register_Y0);
- Wire.send(Register_Y1);
- Wire.endTransmission();
- Wire.requestFrom(ADXAddress,2);
- if(Wire.available()<=2);
- {
- Y0 = Wire.receive();
- Y1 = Wire.receive();
- Y1 = Y1<<8;
- Y_out = Y0+Y1;
- }
- Wire.beginTransmission(ADXAddress);
- Wire.send(Register_Z0);
- Wire.send(Register_Z1);
- Wire.endTransmission();
- Wire.requestFrom(ADXAddress,2);
- if(Wire.available()<=2);
- {
- Z0 = Wire.receive();
- Z1 = Wire.receive();
- Z1 = Z1<<8;
- Z_out = Z0+Z1;
- }
- Xg = X_out/256.00;//把输出结果转换为重力加速度g,精确到小数点后2位。
- Yg = Y_out/256.00;
- Zg = Z_out/256.00;
- /*/////////////////////////////////////////
- 显示X轴
- /////////////////////////////////////////*/
- Serial.print("x=");
- Serial.print(Xg,DEC);
- Serial.print("g");
- Serial.println();
- /*///////////////////////////////////////
- 显示Y轴
- /////////////////////////////////////////*/
- Serial.print("y=");
- Serial.print(Yg,DEC);
- Serial.print("g");
- Serial.println();
- /*///////////////////////////////////////
- 显示Z轴
- /////////////////////////////////////////*/
- Serial.print("z=");
- Serial.print(Zg,DEC);
- Serial.print("g");
- Serial.println();
- delay(300); //延时0.3秒,刷新频率这里进行调整
- }
复制代码 但是显示的都是0.0000g,不知道怎么回事?我用了sparkfun上面的程序,用的是ISP通讯。但读到的数据也都是0,0,0.不知道是模块的问题还是程序问题。麻烦帮我看下上面修改后的程序是否可行?请弘老师或者各位高人指点下,谢谢!
|