この文書の現在のバージョンと選択したバージョンの差分を表示します。
次のリビジョン | 前のリビジョン | ||
arduino_-_加速度センサ [2017/11/23 06:41] fifi 作成 |
arduino_-_加速度センサ [2017/11/23 22:30] (現在) fifi |
||
---|---|---|---|
ライン 14: | ライン 14: | ||
- Arduino Due 20/21番ピンソケット | - Arduino Due 20/21番ピンソケット | ||
+ | ### はまりポイント | ||
+ | |||
+ | - Arduino DUE は int が2バイト(16bit) | ||
+ | - Arduino UNO は int が1バイト(8bit) | ||
+ | |||
+ | ```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 | ||
+ | // https://sites.google.com/a/gclue.jp/fab-zang-docs/ni-yinkiiot/adxl345-i2c | ||
+ | //writeI2c(0x31, 0b00001011); | ||
+ | writeI2c(0x31, 0b00000011); | ||
+ | // POWER_TCL | ||
+ | writeI2c(0x2d, 0b00001000); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | uint8_t length = 6; | ||
+ | readI2c(0x32, length, axis_buff); //レジスターアドレス 0x32から6バイト読む | ||
+ | | ||
+ | int16_t x = (((int16_t)axis_buff[1]) << 8) | axis_buff[0]; | ||
+ | int16_t y = (((int16_t)axis_buff[3]) << 8) | axis_buff[2]; | ||
+ | int16_t z = (((int16_t)axis_buff[5]) << 8) | axis_buff[4]; | ||
+ | | ||
+ | Serial.print( x); | ||
+ | Serial.print(","); | ||
+ | Serial.print( y ); | ||
+ | Serial.print(","); | ||
+ | Serial.println( z ); | ||
+ | |||
+ | // 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(); | ||
+ | } | ||
+ | ``` |