ADXL345


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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容