
ADXL345B

ADXL345B模塊
ADXL345 是一款小巧纖薄的低功耗三軸加速度計,可以對高達(dá)±16 g的加速度進(jìn)行高分辨率(13 位)測量。數(shù)字輸出數(shù)據(jù)為 16 位二進(jìn)制補(bǔ)碼格式,可通過SPI (3 線或 4 線)或者I2C數(shù)字接口訪問。
ADXL345 非常適合移動設(shè)備應(yīng)用。它可以在傾斜檢測應(yīng)用中測量靜態(tài)重力加速度,還可以測量運(yùn)動或沖擊導(dǎo)致的動態(tài)加速度。
它具有高分辨率(4 mg/LSB),能夠測量約 0.25°的傾角變化。
使用 ADXL345 等數(shù)字輸出加速度計時,無需進(jìn)行模數(shù)轉(zhuǎn)換,從而可以節(jié)省系統(tǒng)成本和電路板面積。
其高分辨率(3.9mg/LSB),能夠測量不到1.0°的傾斜角度變化。
不多說了,老套路:直接用 兼容Arduino的禾灮智能機(jī)器人控制板 來個發(fā)煙測試。(板子上直接集成了ADXL345,IIC通信)
Arduino源碼:
// Visual Micro is in vMicro>General>Tutorial Mode
//
/*
Name: ADXL345.ino
Created: 2018/7/23 2:03:35
Author: 禾灮\HeGuang
*/
// Define User Types below here or use a .h file
//
#include <Wire.h>
#include <LiquidCrystal.h>
// Define Function Prototypes that use User Types below here or use a .h file
//
#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
// Define Functions below here or use other .ino or cpp files
//
LiquidCrystal LCD1602(16,15,7,6,5,4); //初始化LCD16021602
int ADXAddress = 0xA7>>1; //轉(zhuǎn)換為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;
// The setup() function runs once each time the micro-controller starts
void setup(){
LCD1602.begin(16, 2); //初始化LCD1602
delay(100);
Wire.begin(); //初始化I2C
delay(100);
Wire.beginTransmission(ADXAddress);
Wire.write(Register_2D);
Wire.write(8);
Wire.endTransmission();
}
// Add the main program code into the continuous loop() function
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; //把輸出結(jié)果轉(zhuǎn)換為重力加速度g,精確到小數(shù)點(diǎn)后2位。
Yg = Y_out/256.00;
Zg = Z_out/256.00;
LCD1602.clear(); //清屏
LCD1602.print("X="); //使屏幕顯示文字X=
LCD1602.print(Xg);
LCD1602.setCursor(8, 0);
LCD1602.print("Y=");
LCD1602.print(Yg);
LCD1602.setCursor(0, 1);
LCD1602.print("Z=");
LCD1602.print(Zg);
delay(300); //延時0.3秒,刷新頻率這里進(jìn)行調(diào)整
}

測試結(jié)果
AVR單片機(jī)演示例程
下面,基于 禾灮智能機(jī)器人控制板,進(jìn)行AVR單片機(jī)C語言程序設(shè)計:
未完待續(xù)。。。
感謝一直關(guān)注著禾灮成長進(jìn)步的朋友們。你們的信任、支持和鼓勵,鞭策著我們一路走到了今天。
感謝所有的合作伙伴,我們相互促進(jìn),共同見證了彼此的成長。
感謝所有曾經(jīng)在禾灮彼此倚靠、相互鼓勵、攜手同心、砥礪同行的兄弟姐妹。這里承載了我們的青春與熱血。
禾灮,感謝有你。
未來,我們將一如既往,砥礪前行。
禾灮·小楊
2018.07.23