この文書の現在のバージョンと選択したバージョンの差分を表示します。
最新リビジョン 両方とも次のリビジョン | |||
arduino_-_加速度センサ [2017/11/23 06:41] fifi 作成 |
arduino_-_加速度センサ [2017/11/23 06:42] fifi |
||
---|---|---|---|
ライン 14: | ライン 14: | ||
- Arduino Due 20/21番ピンソケット | - Arduino Due 20/21番ピンソケット | ||
+ | ```c | ||
+ | #include <Wire.h> | ||
+ | |||
+ | #define DEVICE_ADDR (0x53) // スレーブデバイスのアドレス | ||
+ | byte axis_buff[6]; | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | Serial.begin(9600); // シリアルの開始デバック用 | ||
+ | Wire.begin(); // I2Cの開始 | ||
+ | | ||
+ | Serial.write("init"); | ||
+ | | ||
+ | // DATA_FORMAT | ||
+ | writeI2c(0x31, 0x00); | ||
+ | // POWER_TCL | ||
+ | writeI2c(0x2d, 0x08); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | uint8_t length = 6; | ||
+ | readI2c(0x32, length, axis_buff); //レジスターアドレス 0x32から6バイト読む | ||
+ | int x = (((int)axis_buff[1]) << 8) | axis_buff[0]; | ||
+ | int y = (((int)axis_buff[3]) << 8) | axis_buff[2]; | ||
+ | int z = (((int)axis_buff[5]) << 8) | axis_buff[4]; | ||
+ | |||
+ | Serial.print( x * 32.0 / 8192.0); | ||
+ | Serial.print(","); | ||
+ | Serial.print( y * 32.0 / 8192.0 ); | ||
+ | Serial.print(","); | ||
+ | Serial.println( z * 32.0 / 8192.0 ); | ||
+ | | ||
+ | delay(100); | ||
+ | } | ||
+ | |||
+ | // I2Cへの書き込み | ||
+ | void writeI2c(byte register_addr, byte value) { | ||
+ | Wire.beginTransmission(DEVICE_ADDR); | ||
+ | Wire.write(register_addr); | ||
+ | Wire.write(value); | ||
+ | Wire.endTransmission(); | ||
+ | } | ||
+ | |||
+ | // I2Cへの読み込み | ||
+ | void readI2c(byte register_addr, int num, byte buffer[]) { | ||
+ | Wire.beginTransmission(DEVICE_ADDR); | ||
+ | Wire.write(register_addr); | ||
+ | Wire.endTransmission(); | ||
+ | |||
+ | Wire.beginTransmission(DEVICE_ADDR); | ||
+ | Wire.requestFrom(DEVICE_ADDR, num); | ||
+ | |||
+ | int i = 0; | ||
+ | while(Wire.available()) | ||
+ | { | ||
+ | buffer[i] = Wire.read(); | ||
+ | i++; | ||
+ | } | ||
+ | Wire.endTransmission(); | ||
+ | } | ||
+ | ``` |