還有一篇進階篇可參考:http://lolikitty.pixnet.net/blog/post/163257851
#include <Wire.h> // LSM303DLHC 的 i2c 地址。由於 Arduino i2c 資料空間是 7 bit 所以要右移一個位元 int i2cAddress = 0x32 >> 1; 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; }
輸出結果:
資料手冊說明:(查看完整請資料手冊請點我)
針對上面 writeReg(0x20,0b00100111); 程式碼的說明
上面程式碼 readReg(0x29)、readReg(0x2B)、readReg(0x2D) 的來源是資料手冊的這裡:
全站熱搜