先用i2cscanner找出LSM303DLHC的位址
#include <Wire.h>
// LSM303DLHC 的 i2c 地址。
int i2cAddress = 0x18;
void setup() {
Serial.begin(9600);
Serial.println("-------------------");
Wire.begin(); // 啟用 i2c
writeReg(0x20,0b00100111); // 打開三軸加速計的電源 ,設定每秒讀取10次,啟用XYZ軸
}
void loop() {
Serial.print("X : ");
Serial.print(readReg(0x29));
Serial.print(" Y : ");
Serial.print(readReg(0x2B));
Serial.print(" Z : ");
Serial.println(readReg(0x2D));
delay(500);
}
/*************************************************************
* 寫入佔存器:writeReg(int reg, int value)
* reg:佔存器地址
* value:要寫入的值
*/
void writeReg(int reg, int value){
Wire.beginTransmission(i2cAddress);
Wire.write(reg);
Wire.write(value);
Wire.endTransmission();
}
/*************************************************************
* 讀取佔存器:readReg(int reg)
* reg:要讀取的佔存器地址
*/
int readReg(int reg){
Wire.beginTransmission(i2cAddress);
Wire.write(reg);
Wire.endTransmission();
Wire.requestFrom(i2cAddress, 1);
int value = Wire.read();
Wire.endTransmission();
return value;
}