dingoslove 发表于 2015-6-7 20:05:25

调试adxl345,i2c接口1602屏幕显示

本帖最后由 dingoslove 于 2015-6-7 20:06 编辑

好久就买了adxl345,一直没有调试,今天有空实验一下。
ADXL345 是一款小巧纤薄的低功耗三轴加速度计,可以对高达±16 g的加速度进行高分辨率(13 位)测量。数字输出数据为 16 位二进制补码格式,可通过SPI (3 线或 4 线)或者I2C数字接口访问。
本例中,ADXL345接3.3v,i2c通信,屏幕使用串口板加1602屏幕,i2c接口,这样接线简单,arduino使用2009版,IDE为1.6.4最新版。
#include <Wire.h>//调用arduino自带的I2C库
#include <LiquidCrystal_I2C.h>   //调用arduino自带的LiquidCrystal库

#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

LiquidCrystal_I2C lcd(0x27,16,2);// 设置 LCD 地址为 0x27 ,16字符2行显示

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()
{
lcd.init();//初始化LCD
delay(100);
Wire.begin();//初始化I2C
delay(100);
Wire.beginTransmission(ADXAddress);
Wire.write(Register_2D);
Wire.write(8);
Wire.endTransmission();
lcd.backlight();

}

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;
lcd.clear(); //清屏
lcd.print("X="); //使屏幕显示文字X=
lcd.print(Xg);
lcd.setCursor(8, 0);
lcd.print("Y=");
lcd.print(Yg);
lcd.setCursor(0, 1);
lcd.print("Z=");
lcd.print(Zg);
delay(300);//延时0.3秒,刷新频率这里进行调整

}

dingoslove 发表于 2015-6-7 20:09:48

程序修改子,弘毅老师的,原帖地址http://www.geek-workshop.com/forum.php?mod=viewthread&tid=80&highlight=adxl345

dingoslove 发表于 2015-6-7 20:14:59

本帖最后由 dingoslove 于 2015-6-8 16:12 编辑

http://image.geek-workshop.com/album/201506/08/161234ffkdazolf46uk46z.jpg
看看效果吧,接线很容易看清

pumpitup 发表于 2015-6-8 18:02:36

好吧,下一阶段看看

zhanghe390 发表于 2015-7-3 23:29:48

请问接口是只能选择A4,A5吗?我看你写的程序和我找的其他程序里都没有定义接口。如果不是必须要A4,A5的话,比如说我希望改为A3,A4,再程序里应该如何实现呢?谢谢!

dingoslove 发表于 2015-8-23 12:01:36

zhanghe390 发表于 2015-7-3 23:29 static/image/common/back.gif
请问接口是只能选择A4,A5吗?我看你写的程序和我找的其他程序里都没有定义接口。如果不是必须要A4,A5的话 ...

A4,A5是默认的I2c接口,可以改动,我不会

huangddd 发表于 2015-9-12 13:54:31

dingoslove 发表于 2015-8-23 12:01 static/image/common/back.gif
A4,A5是默认的I2c接口,可以改动,我不会

请问一下,你哪两个木块是并联在A4和A5上的吗
页: [1]
查看完整版本: 调试adxl345,i2c接口1602屏幕显示