出自flip the world 檢視Application - BMA250, triaxial acceleration sensor的原始碼 頁面討論 閱讀檢視原始碼檢視歷史 ←Application - BMA250, triaxial acceleration sensor 您沒有權限執行編輯此頁面,由於以下原因: 您請求的操作只有這個群組的使用者能使用:使用者 您可以檢視並複製此頁面的原始碼。 Example code for reading the '''BMA250''' triaxial acceleration sensor. == Example code == <syntaxhighlight lang="c"> #include "Wire.h" byte range=0x03; float divi=16; int addr = 0x18; void setup() { Serial.begin(115200); Wire.begin(); Wire.beginTransmission(addr); // address of the accelerometer // Start I2C Transmission Wire.beginTransmission(addr); // Select range selection register Wire.write(0x0F); // Set range +/- 2g Wire.write(0x03); // Stop I2C Transmission Wire.endTransmission(); // Start I2C Transmission Wire.beginTransmission(addr); // Select bandwidth register Wire.write(0x10); // Set bandwidth 7.81 Hz Wire.write(0x10); // Stop I2C Transmission Wire.endTransmission(); // low pass filter Wire.beginTransmission(addr); Wire.write(0x20); //register address Wire.write(0x05); //can be set at"0x05""0x04"......"0x01""0x00", refer to Datashhet on wiki Wire.endTransmission(); } void AccelerometerInit() { unsigned int data[0]; // Start I2C Transmission Wire.beginTransmission(addr); // Select Data Registers (0x02 − 0x07) Wire.write(0x02); // Stop I2C Transmission Wire.endTransmission(); // Request 6 bytes Wire.requestFrom(addr, 6); // Read the six bytes // xAccl lsb, xAccl msb, yAccl lsb, yAccl msb, zAccl lsb, zAccl msb while(!Wire.available()) ; data[0] = Wire.read(); data[1] = Wire.read(); data[2] = Wire.read(); data[3] = Wire.read(); data[4] = Wire.read(); data[5] = Wire.read(); delay(10); // Convert the data to 10 bits float xAccl = ((data[1] * 256.0) + (data[0] & 0xC0)) / 64; if (xAccl > 511) { xAccl -= 1024; } float yAccl = ((data[3] * 256.0) + (data[2] & 0xC0)) / 64; if (yAccl > 511) { yAccl -= 1024; } float zAccl = ((data[5] * 256.0) + (data[4] & 0xC0)) / 64; if (zAccl > 511) { zAccl -= 1024; } // Output data to the serial monitor Serial.print("X-Axis :"); Serial.print(xAccl); Serial.print(" "); Serial.print("Y-Axis :"); Serial.print(yAccl); Serial.print(" "); Serial.print("Z-Axis :"); Serial.println(zAccl); } void loop() { /* switch(range) //change the data dealing method based on the range u've set { case 0x00:divi=16; break; case 0x01:divi=8; break; case 0x02:divi=4; break; case 0x03:divi=2; break; default: Serial.println("range setting is Wrong,range:from 0to 3.Please check!");while(1); } */ AccelerometerInit(); } </syntaxhighlight> [[Category:Projects]] 返回到「Application - BMA250, triaxial acceleration sensor」。